我试图在我的代码中使用NSAssert,但它什么也不做。
在这段代码中,断言应该失败,但不会:
MSLog(@"cross.obj = %@",[cross obj]);
NSAssert([cross obj]!=nil,@"[cross obj] == nil");这方面的产出如下:
cross.obj = (null)
,有什么问题吗?
发布于 2011-05-31 17:08:01
NS_BLOCK_ASSERTIONS阻止断言的正常工作。尝试删除定义。
发布于 2012-10-17 14:06:02
这背后的原因是nil和null值之间有区别。
所以请和其他例子核对一下。
看起来不错。
发布于 2011-05-31 17:00:07
原因可能是[cross obj]的结果是[NSNull null],而不是nil。
输出可能是<null>,这并不意味着NULL或nil,而是NSNull单例对象。此对象用作占位符,其中nil不是选项(例如,在NSArray中)。
另一个原因可能是定义了NS_BLOCK_ASSERTIONS预处理器宏,从而禁用NSAssert。
https://stackoverflow.com/questions/6190863
复制相似问题