Objective c NSAssert没有';行不通
我试图在我的代码中使用Objective c NSAssert没有';行不通,objective-c,assert,nsassert,Objective C,Assert,Nsassert,我试图在我的代码中使用NSAssert,但它没有任何作用 在这段代码中,断言应该失败,但不会: MSLog(@"cross.obj = %@",[cross obj]); NSAssert([cross obj]!=nil,@"[cross obj] == nil"); 其输出为: cross.obj=(空) 可能是什么问题?原因可能是[cross obj]的结果是[NSNull null],而不是零 输出可能是,这并不意味着NULL或nil而是NSNull单例对象。此对象用作
NSAssert
,但它没有任何作用
在这段代码中,断言应该失败,但不会:
MSLog(@"cross.obj = %@",[cross obj]);
NSAssert([cross obj]!=nil,@"[cross obj] == nil");
其输出为:
cross.obj=(空)
可能是什么问题?原因可能是
[cross obj]
的结果是[NSNull null]
,而不是零
输出可能是
,这并不意味着NULL
或nil
而是NSNull
单例对象。此对象用作占位符,其中nil
不是选项(例如在NSArray
s中)
另一个原因可能是定义了
NS_BLOCK_断言
预处理器宏,该宏禁用NSAssert
NS_BLOCK_断言
阻止断言运行。尝试删除定义。这背后的原因是nil
和null
值之间存在差异
所以,请用其他例子来检验一下
它会起作用。由于某种原因,设置了
NS\u BLOCK\u断言。[cross obj]=nil
计算为FALSE
nil和NULL是相同的值。相反,[NSNull]是具有非nil值的对象。