在Objective-C中,为什么是[object doSomething]
?既然你在对象上调用一个方法,它不是[*object doSomething]
吗?这意味着你应该取消对指针的引用。
发布于 2010-02-03 10:41:03
因为objc_msgSend()是这样声明的:
id objc_msgSend(id theReceiver, SEL theSelector, ...)
发布于 2010-02-03 10:59:37
你永远不要取消引用对象指针,句号。它们被定义为指针类型,而不仅仅是“对象类型”,这一事实是C语言传统的产物。它完全等同于Java的类型系统,在这种系统中,对象总是通过引用来访问的。在Java中,你永远不会去引用一个对象--事实上,你不能。你不应该把它们当作指针,因为在语义上,它们不是。它们只是对象引用。
发布于 2010-02-03 10:51:31
部分原因是你会得到空指针异常的左和右。向nil
发送消息是允许的,而且通常是完全合法的(它什么也不做,也不会生成错误)。
但您可以将其视为类似于C++的->
表示法:它执行方法并在一块语法糖中取消对指针的引用。
https://stackoverflow.com/questions/2189212
复制相似问题