我尝试在代码中使用NSAssert
,但它没有做任何事情。
在这段代码中,断言应该失败,但不是:
MSLog(@"cross.obj = %@",[cross obj]);
NSAssert([cross obj]!=nil,@"[cross obj] == nil");
这个输出是:
cross.obj =(null)
可能是什么问题?
答案 0 :(得分:3)
NS_BLOCK_ASSERTIONS
阻止断言运作。尝试删除定义。
答案 1 :(得分:1)
这背后的原因是nil
和null
值之间存在差异。
所以请用其他例子来检查。
它会起作用。
答案 2 :(得分:0)
原因可能是[cross obj]
的结果是[NSNull null]
,而不是nil
。
输出可能是<null>
,但不是NULL
或nil
,而是NSNull
单例对象。此对象用作占位符,其中nil
不是一个选项(例如在NSArray
s中)。
另一个原因可能是NS_BLOCK_ASSERTIONS
预处理器宏被定义为禁用NSAssert
。