1、如何自定义NSLog呢?
直接在工程的XXX_Prefix.pch中加入以下语句(就相当于在全局中定义了)
#define NSLog NSLog(@"#%s##%d#",strrchr(__FILE__,'/'),__LINE__);NSLog
例如NSLog(@" begin main function");
打印出来如下
#/main.mm##30#
begin main function
2、如何在发行版release中屏蔽NSLog
方法1:
直接在工程的XXX_Prefix.pch中加入以下语句(就相当于在全局中定义了)
#define NSLog //NSLog
方法2:
步骤比较简单,只需要 在ProjectName_Prefix.pch 中追加你对应的宏定义,不用import 就可以直接使用了。
宏定义写法如下:
- #ifdef DEBUG
- #define LOG(...) NSLog(__VA_ARGS__);
- #define LOG_METHOD NSLog(@"%s", __func__);
- #else
- #define LOG(...); #define LOG_METHOD;
- #endif
这样设置后,只需要在Product ->Scheme->Edit Scheme ->info选择,是release ,还是debug版本即可。如果debug 版本,则答应log,若release版本则不打印。
我们发布到appstore 上的版本均是release版本,这里简单说下这两个版本的差异。
release 是发行版本,比debug版本要小一些,他们调用两个不同底层库,debug 包含的信息多,可以断点调试,单步执行,使用使用TRACE/ASSERT等调试输出语句,
但是release 版本不包含调试信息,运行速度比较快。
另外在此处设置的DEBUG 参数可以在下面的路径进行设置:工程->Target->Build Setting ->Preprocessor Macros。默认系统已经给出了DEBUG的参数。如果要增加新的参数,则在哪里进行增加。
release 是发行版本,比debug版本要小一些,他们调用两个不同底层库,debug 包含的信息多,可以断点调试,单步执行,使用使用TRACE/ASSERT等调试输出语句,
但是release 版本不包含调试信息,运行速度比较快。
另外在此处设置的DEBUG 参数可以在下面的路径进行设置:工程->Target->Build Setting ->Preprocessor Macros。默认系统已经给出了DEBUG的参数。如果要增加新的参数,则在哪里进行增加。
方法3:
打开工程 Project--->Edit Project Editting(选着build)选项--->找到Preprocessor Macros 设置其值为DEBUG=1
如图所示: