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