2013-12-10 22 views
0

如果我們使用NSLogs在設備上運行應用程序,那麼它可能會在一定程度上降低應用程序的速度。NSAssert會在iOS設備上使用任何內存嗎?

NSAssert與NSLog在內存方面的作用方式相同嗎?

任何意見或建議,將不勝感激。

預先感謝您。

+0

請記住,NSLog每次執行時都會有開銷(包括CPU和存儲)。在斷言失敗之前,NSAssert的開銷很小,因爲無論如何,這個時候應用程序都會崩潰,所以它並不重要。 –

回答

2

也許這會回答你的問題

地注意到,Xcode的4.2,斷言默認情況下,發佈版本,它通過定義 NS_BLOCK_ASSERTIONS宏完成關閉 是很重要的。也就是說,編譯發佈時, 任何調用NSAssert & co。被有效移除。

來源:http://nshipster.com/nsassertionhandler/

如果你離開他們啓用,那麼是的,他們是有代價的(很明顯,他們需要進行評估),並取決於你有什麼樣的代碼都可以執行它的不同。對於簡單的零比較,它是微不足道的。

更多參考見:http://www.mikeash.com/pyblog/friday-qa-2013-05-03-proper-use-of-asserts.html

具體這個通道

運行時的成本是可以忽略的,如果不是的話,那麼你應該重做你的斷言來解決這個問題。

1

在XCode中,默認情況下,斷言在發佈時是禁用的,所以它們不會花費任何處理時間。如果您在構建設置檢查,NS_BLOCK_ASSERTIONS被設置爲1,看NSAssert在這種情況下定義

#define NSAssert(condition, desc, ...) do {} while (0) 

空循環,會在編譯時被刪除。

相關問題