首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >objects如何处理发送给零对象的消息?

objects如何处理发送给零对象的消息?
EN

Stack Overflow用户
提问于 2011-08-29 00:17:24
回答 2查看 766关注 0票数 3

我知道向零对象发送release消息是可以的。其他消息怎么办?下面的代码将0打印到控制台。我想知道为什么。

代码语言:javascript
复制
NSArray *a = nil;
int i = [a count];
NSLog(@"%d", i);

nil对象发送消息是否会导致错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-29 00:30:36

objc_msgSend()有效地将消息丢弃到nil。如果该方法具有非void返回类型,则它将返回类似于nil的内容,即0NO0.0,尽管是这并不总是保证所有平台上的所有返回类型。因此,您可能会遇到的唯一错误是当您的对象实际上不是零时(例如,当它是对已分配对象的引用时),或者当您没有适当地将nil作为返回类型处理时。

在您的示例中,-count返回一个NSUInteger,因此i的值将是0,因为objc_msgSend()将向nil返回0,该消息应该返回NSUInteger

票数 4
EN

Stack Overflow用户

发布于 2011-08-29 00:29:37

保证从消息返回nil对象的值对于标量返回类型,即nil00.0NO等,返回等价于零的值。

看这里:向零发送消息

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7224939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档