2

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

谢谢

4

3 回答 3

11

如果您重新声明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);
                ^
于 2013-04-17T20:33:08.707 回答
2

在您的前缀标头中:

#define NSLog(x, ...) (__please_dont_use_NSLog__)
于 2013-04-17T20:19:46.067 回答
1

尝试这个!

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

可以在这里找到解决方案:Enable and Disable NSLog in DEBUG mode

希望这有帮助!

于 2013-04-17T20:20:46.213 回答