不允许使用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
希望这有助于!