本文將簡單的介紹ios中的幾種斷言方式
1. assert
assert只是一個宏,用于開發(fā)階段調(diào)試程序中的bug,通過為assert()來傳遞表達式來判斷是否屬于bug,滿足條件返回真值程序繼續(xù)運行,如果返回假則拋出異常,但是assert僅僅只是簡單的拋出異常終止程序。
2. NSAssert
NSAssert也僅僅是一個宏,條件判斷與assert相同,不同的是可以自定義異常的描述,在條件返回假時會提示錯誤信息并打印出來。
例如:
- (void)testAssert {
int a = 0;
NSAssert(a, @"a的值不能為0");
NSLog(@"程序正常運行了");
}
當程序執(zhí)行時運行到斷言處會crash并在控制臺會提示上述自定義的報錯信息。
3. NSParameterAssert/NSCparameterAssert
NSParameterAssert是適用于Objective-C的方法,NSCparameterAssert是適用于C的函數(shù)
4. NSAssert與NSParameterAssert的區(qū)別
先來看看NSParameterAssert的定義:
#define NSParameterAssert(condition) NSAssert((condition), @"Invalid parameter not satisfying: %@", @#condition)
從定義中不難看到NSParameterAssert是對NSAssert的重新定義在某種意義上來說他兩是等價的,具體的區(qū)別未完待續(xù)。。。