2
A
回答
11
如果重新申报NSLog
(或许也是NSLogv
)作为
void NSLog(NSString *format, ...) UNAVAILABLE_ATTRIBUTE;
void NSLogv(NSString *format, va_list args) UNAVAILABLE_ATTRIBUTE;
在预编译头文件
,你会得到一个不错的错误信息:
main.m:199:3: error: 'NSLog' is unavailable NSLog(@"%@", s1); ^
你甚至可以提供自定义错误信息(在Clang文档的Messages on deprecated and unavailable Attributes中找到):
void NSLog(NSString *format, ...) __attribute__((unavailable("You should not do this!")));
main.m:202:3: error: 'NSLog' is unavailable: You should not do this! NSLog(@"%@", s1); ^
2
在您的前缀头:
#define NSLog(x, ...) (__please_dont_use_NSLog__)
1
试试这个!
#ifdef DEBUG
# define NSLog(...) NSLog(__VA_ARGS__)
#else
# define NSLog(...)
#endif
该解决方案可以在这里找到:Enable and Disable NSLog in DEBUG mode
希望这有助于!
+0
如果使用NSLog,则不会产生错误,它只会使NSLog输出无效。 –
相关问题
- 1. 我如何使不允许列允许空和允许空列不允许空
- 2. 创建iOS Framework/Bundle之后NSLog不允许记录变量值?
- 3. 不允许使用expressjs
- 4. 不允许使用负值
- 5. PHP preg_match不允许使用
- 6. stringWithUTF8String不允许使用ARC
- 7. 不允许使用Javascript
- 8. move_uploaded_file:不允许使用tmp_name?
- 9. 阵列允许不允许
- 10. 不允许使用不适用
- 11. 在Android 6上点击“允许”后不允许使用权限
- 12. 访问控制允许来源不允许使用AJAX来源
- 13. 允许使用iptables
- 14. 允许使用Javascript
- 15. jQuery表单验证 - 只允许使用字母 - 也不允许使用空格
- 16. CSS允许/不允许字符
- 17. Spring Security-允许GET但不允许POST
- 18. 不允许Guid.Empty
- 19. cmd.ExecuteNonQuery()不允许
- 20. 不允许malloc()?
- 21. FormatMessage不允许?
- 22. 不允许
- 23. Recordset.RecordCount不允许
- 24. java.nio.file.Files.setOwner()不允许
- 25. 不允许使用CloudKit wegservice方法
- 26. 不允许使用连接符转换
- 27. 不允许使用Laravel方法
- 28. ocsigenserver:您不允许使用端口80
- 29. Laravel日期不允许我使用diffForHumans
- 30. CodeIgniter - 不允许使用Singleton模式?
出于好奇,为什么? –
@TRedman - 我正在读“学习核心音频”一书 - 这是一个脚注,表示作者无法弄清楚为什么他的代码没有运行,他剔除了NSLog,发现代码正常工作,结果证明这是一个速度问题。 – Chris
这个问题很有趣,但书的作者应该试着在他的代码中找到一个实际的问题。比如像这样搞比较:'BOOL byes = YES; NSLog(@“%@”,(byes = NO)?@“N”:@“Y”);' - 注意在NSLog之后没有比较运算符和'byes''NO'。 –