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'。 –