是否可以禁止使用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 文档的已弃用和不可用属性的消息中找到):
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
可以在这里找到解决方案:Enable and Disable NSLog in DEBUG mode
希望这有帮助!