2

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

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

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

这个的输出是:

cross.obj = (null)

可能是什么问题呢?

4

3 回答 3

3

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

于 2011-05-31T17:08:01.297 回答
1

The reason behind this is that there is a difference between a nil and a null value.

So please check it with other examples.

It will work.

于 2012-10-17T14:06:02.530 回答
0

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

输出可能<null>不是指单例对象,NULL也可能nilNSNull单例对象。此对象用作nil不是选项的占位符(例如在NSArrays 中)。

另一个原因可能NS_BLOCK_ASSERTIONS是定义了预处理器宏,它禁用了NSAssert.

于 2011-05-31T17:00:07.710 回答