NSAssert()只是一個(gè)宏漆魔,用于開發(fā)階段調(diào)試程序中的Bug有送,通過為NSAssert()傳遞條件表達(dá)式來斷定是否屬于Bug,滿足條件返回真值雀摘,程序繼續(xù)運(yùn)行,如果返回假值涯塔,則拋出異常,并切可以自定義異常描述匕荸。NSAssert()是這樣定義的:
#define NSAssert(condition, desc)
condition是條件表達(dá)式榛搔,值為YES或NO;desc為異常描述践惑,通常為NSString。當(dāng)conditon為YES時(shí)程序繼續(xù)運(yùn)行凉袱,為NO時(shí)侦铜,則拋出帶有desc描述的異常信息。NSAssert()可以出現(xiàn)在程序的任何一個(gè)位置涤躲。具體事例如下:
生成一個(gè)LotteryEntry對(duì)象時(shí)贡未,傳入的NSDate不能為nil,加入NSAssert()判斷缸托。對(duì)象初始化源碼如下:
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
NSAssert(nibNameOrNil != nil , @"nibNameOrNil can't nil" );
[self customTabbarItem:kTabbarItemModeMain];
self.title = mainItem_main;
}
return self;
}
如果初始化的時(shí)候瘾蛋,
MainListViewController *mainVC = [[MainListViewController alloc] initWithNibName:nil bundle:nil];
結(jié)果是這樣的: