NSAssert不起作用

时间:2011-05-31 16:50:35

标签: objective-c assert nsassert

我尝试在代码中使用NSAssert,但它没有做任何事情。

在这段代码中,断言应该失败,但不是:

    MSLog(@"cross.obj = %@",[cross obj]);
    NSAssert([cross obj]!=nil,@"[cross obj] == nil");

这个输出是:

  

cross.obj =(null)

可能是什么问题?

3 个答案:

答案 0 :(得分:3)

NS_BLOCK_ASSERTIONS阻止断言运作。尝试删除定义。

答案 1 :(得分:1)

这背后的原因是nilnull值之间存在差异。

所以请用其他例子来检查。

它会起作用。

答案 2 :(得分:0)

原因可能是[cross obj]的结果是[NSNull null],而不是nil

输出可能是<null>,但不是NULLnil,而是NSNull单例对象。此对象用作占位符,其中nil不是一个选项(例如在NSArray s中)。

另一个原因可能是NS_BLOCK_ASSERTIONS预处理器宏被定义为禁用NSAssert