開(kāi)發(fā)ios程序時(shí)調(diào)試的好幫手---NSAssert()函數(shù)。而且和NSLog()函數(shù)一樣簡(jiǎn)單易用嗤形,代碼如下:? ? NSAssert(x!=0,@"x must not be zero");
在表達(dá)式“x!=0”不成立時(shí),程序就會(huì)拋出異常,并顯示自定義的消息"x must not be zero",并同時(shí)顯示出錯(cuò)的文件泉蝌、代碼和調(diào)用函數(shù)等信息歇万,是一個(gè)程序追蹤的很好手段。
假設(shè)x!=0勋陪,不滿足要求就提示reason-x must not be zero
assert 是C里面的宏贪磺。用于斷言。
NSAssert 只能在Objective-c里面使用诅愚。是assert的一個(gè)擴(kuò)充缘挽。能捕獲assert類異常及打印一些
可讀的日志。而assert只是讓app crash(abort).
參考文章NSAssert的使用
小心使用NSAssert呻粹,可以看到它的定義中出現(xiàn)了一個(gè)self, 有可能在你的block中你會(huì)發(fā)現(xiàn)你明明沒(méi)有self的strong引用壕曼,但是仍然出現(xiàn)了循環(huán)引用。就看看你是否使用了NSAssert等浊,這個(gè)宏被展開(kāi)之后持有了self腮郊,那么有可能就會(huì)出現(xiàn)引用不釋放的問(wèn)題。
而使用NSCassert筹燕,就不會(huì)有這樣的問(wèn)題了轧飞。因?yàn)樗x使用的handleFailureInFunction函數(shù),并沒(méi)有self引用撒踪。