NSAssert 不起作用

发布于 2024-11-11 14:50:25 字数 293 浏览 1 评论 0原文

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

在这段代码中,断言应该失败,但实际上却没有:

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

其输出是:

cross.obj = (空)

可能是什么问题?

I'm trying to use NSAssert in my code but it doesn't do a thing.

In this piece of code, the assertion should fail but doesn't:

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

The output of this is:

cross.obj = (null)

What could be the problem?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蓝梦月影 2024-11-18 14:50:25

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

NS_BLOCK_ASSERTIONS blocks assertions from functioning. Try deleting the definition.

你的呼吸 2024-11-18 14:50:25

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

因此,请通过其他示例进行检查。

它会起作用的。

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.

眼泪也成诗 2024-11-18 14:50:25

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

输出可能是 ,这并不意味着 NULLnil 而是 NSNull 单例对象。该对象用作占位符,其中 nil 不是一个选项(例如在 NSArray 中)。

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

The reason might be that the result from [cross obj] is [NSNull null], not nil.

The output probably is <null> which does not mean NULL or nil but the NSNull singleton object. This object is used as a placeholder where nil is not an option (for instance in NSArrays).

Another reason might be that the NS_BLOCK_ASSERTIONS preprocessor macro is defined which disables NSAssert.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文