NSAssert知識

assert 是C里面的宏。用于斷言。

NSAssert 類似于NSLog(),方便易用。但她只能在Objective-c里面使用。是assert的一個擴充。能捕獲assert類異常及打印一些可讀的日志。而assert只是讓app crash(abort)。

NSAssert(斷言)是指在開發期間使用的、讓程序在運行時進行自檢的代碼。斷言為真,則表明程序運行正常,而斷言為假,則意味著它已經在代碼中發現了意料之外的錯誤。斷言對于大型的復雜程序或可靠性要求極高的程序來說尤其有用。

NSAssert是foundation.framework中定義的一個宏:#define NSAssert(condition, desc, ...)第一個參數為一個條件判斷,如果為假,則拋出異常,顯示第二個參數所描述的信息。

比如:程序中會使用NSAssert(param.count==3,@"傳入的參數不符合預期"); 以在debug模式下,校驗數組param傳入的參數個數是否正確,如果不正確則會打印日志:"傳入的參數不符合預期",方便我們調試程序。

在release模式下運行,不終止程序不拋出異常,這樣做很方便調試程序。當在真機中時,會自動忽略。調試cocoa程序在程序出錯時,不會馬上停止。使用宏NSAssert可以讓程序出錯時馬上拋出異常。在debug情況下,所有NSAssert都會被執行。在release下不希望NSAssert被執行,我們通常在release種將斷言設置成禁用。設置方法:在targets種選擇build,選擇release。

關于Xcode開發模式中的release與debug模式,請參考如下鏈接: http://my.oschina.net/leejan97/blog/296920

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,967評論 19 139
  • 目錄:1、播放系統音頻2、更改狀態欄顏色3、圖片填充4、圖片切圓5、沙盒路徑6、各個字段的含義7、dispatch...
    my_楊哥閱讀 633評論 1 7
  • Xcode 已經默認將release環境下的斷言取消了, 免除了忘記關閉斷言造成的程序不穩定. 所以不用擔心 在開...
    Crazy2015閱讀 1,462評論 0 1
  • 簡介 C++98/03的設計目標:一、比C語言更適合系統編程(且與C語言兼容)。二、支持數據抽象。三、支持面向對象...
    認真學計算機閱讀 5,351評論 0 53
  • 今天是大年三十啦!除了年夜飯外,央視春晚應該也是家家戶戶的“娛樂年夜飯”吧。從央視春晚官方昨晚最新公布的節目單來看...
    力量時評閱讀 528評論 0 7