不允许使用NSLog

是否有可能禁止使用NSLog ,所以它会出现一个错误,如果在编译时使用? 理想情况下的某种编译器标志与不允许的方法的名称?

谢谢

如果你重新声明NSLog (也许还NSLogv )为

 void NSLog(NSString *format, ...) UNAVAILABLE_ATTRIBUTE; void NSLogv(NSString *format, va_list args) UNAVAILABLE_ATTRIBUTE; 

在你预编译的头文件中,你会得到一个很好的错误信息:

 main.m:199:3:错误:“NSLog”不可用
                 NSLog(@“%@”,s1);
                 ^

您甚至可以提供自定义错误消息(在Clang文档的已弃用和不可用的属性上的消息中find):

 void NSLog(NSString *format, ...) __attribute__((unavailable("You should not do this!"))); 

 main.m:202:3:错误:'NSLog'不可用:你不应该这样做!
                 NSLog(@“%@”,s1);
                 ^

在你的前缀头文件中:

 #define NSLog(x, ...) (__please_dont_use_NSLog__) 

尝试这个!

  #ifdef DEBUG # define NSLog(...) NSLog(__VA_ARGS__) #else # define NSLog(...) #endif 

解决方法可以在这里find: 在debugging模式下启用和禁用NSLog

希望这有助于!