NSAssert知識(shí)

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

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

NSAssert(斷言)是指在開發(fā)期間使用的、讓程序在運(yùn)行時(shí)進(jìn)行自檢的代碼。斷言為真,則表明程序運(yùn)行正常,而斷言為假,則意味著它已經(jīng)在代碼中發(fā)現(xiàn)了意料之外的錯(cuò)誤。斷言對(duì)于大型的復(fù)雜程序或可靠性要求極高的程序來(lái)說(shuō)尤其有用。

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

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

在release模式下運(yùn)行,不終止程序不拋出異常,這樣做很方便調(diào)試程序。當(dāng)在真機(jī)中時(shí),會(huì)自動(dòng)忽略。調(diào)試cocoa程序在程序出錯(cuò)時(shí),不會(huì)馬上停止。使用宏NSAssert可以讓程序出錯(cuò)時(shí)馬上拋出異常。在debug情況下,所有NSAssert都會(huì)被執(zhí)行。在release下不希望NSAssert被執(zhí)行,我們通常在release種將斷言設(shè)置成禁用。設(shè)置方法:在targets種選擇build,選擇release。

關(guān)于Xcode開發(fā)模式中的release與debug模式,請(qǐng)參考如下鏈接: http://my.oschina.net/leejan97/blog/296920

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,511評(píng)論 19 139
  • 目錄:1、播放系統(tǒng)音頻2、更改狀態(tài)欄顏色3、圖片填充4、圖片切圓5、沙盒路徑6、各個(gè)字段的含義7、dispatch...
    my_楊哥閱讀 721評(píng)論 1 7
  • Xcode 已經(jīng)默認(rèn)將release環(huán)境下的斷言取消了, 免除了忘記關(guān)閉斷言造成的程序不穩(wěn)定. 所以不用擔(dān)心 在開...
    Crazy2015閱讀 1,548評(píng)論 0 1
  • 簡(jiǎn)介 C++98/03的設(shè)計(jì)目標(biāo):一、比C語(yǔ)言更適合系統(tǒng)編程(且與C語(yǔ)言兼容)。二、支持?jǐn)?shù)據(jù)抽象。三、支持面向?qū)ο?..
    認(rèn)真學(xué)計(jì)算機(jī)閱讀 5,512評(píng)論 0 53
  • 今天是大年三十啦!除了年夜飯外,央視春晚應(yīng)該也是家家戶戶的“娛樂(lè)年夜飯”吧。從央視春晚官方昨晚最新公布的節(jié)目單來(lái)看...
    力量時(shí)評(píng)閱讀 571評(píng)論 0 7

友情鏈接更多精彩內(nèi)容