首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么是[object doSomething]而不是[*object doSomething]?

为什么是[object doSomething]而不是[*object doSomething]?
EN

Stack Overflow用户
提问于 2010-02-03 10:20:43
回答 5查看 5.8K关注 0票数 49

在Objective-C中,为什么是[object doSomething]?既然你在对象上调用一个方法,它不是[*object doSomething]吗?这意味着你应该取消对指针的引用。

EN

回答 5

Stack Overflow用户

发布于 2010-02-03 10:41:03

因为objc_msgSend()是这样声明的:

id objc_msgSend(id theReceiver, SEL theSelector, ...)
票数 10
EN

Stack Overflow用户

发布于 2010-02-03 10:59:37

你永远不要取消引用对象指针,句号。它们被定义为指针类型,而不仅仅是“对象类型”,这一事实是C语言传统的产物。它完全等同于Java的类型系统,在这种系统中,对象总是通过引用来访问的。在Java中,你永远不会去引用一个对象--事实上,你不能。你不应该把它们当作指针,因为在语义上,它们不是。它们只是对象引用。

票数 6
EN

Stack Overflow用户

发布于 2010-02-03 10:51:31

部分原因是你会得到空指针异常的左和右。向nil发送消息是允许的,而且通常是完全合法的(它什么也不做,也不会生成错误)。

但您可以将其视为类似于C++的->表示法:它执行方法并在一块语法糖中取消对指针的引用。

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

https://stackoverflow.com/questions/2189212

复制
相关文章

相似问题

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