Objective-C方法如何访问被调用者的ivars?

TMB*_*TMB 2 oop objective-c instance-variables self

我正在阅读Apple的文档,Objective-C Programming Language(PDF链接).在pg.18,在接收者的实例变量下,我看到了这一点.

方法可以自动访问接收对象的实例变量.您不需要将它们作为参数传递给方法.例如,primaryColor上面说明的方法不带参数,但它可以找到原色otherRect并返回它.每个方法都假定接收器及其实例变量,而不必将它们声明为参数.

此约定简化了Objective-C源代码.它还支持面向对象的程序员思考对象和消息的方式.信件被发送到接收器,就像信件被送到您的家一样.消息参数将信息从外部传递给接收者; 他们不需要将接收器带到自己身上.

我想更好地理解他们所描述的内容; 这是Python的self参数,还是风格?

Mac*_*ade 9

Objective-C是C的严格超集.

所以Objective-C方法是"只是"函数指针,而实例是"只是"C结构.

方法有两个隐藏参数.第一个是self(当前实例),第二个是_cmd(方法的选择器).

但是文档在第18页中描述的是从方法访问类实例变量.

它只是说类的方法可以访问该类的实例变量.从面向对象的角度来看,这是非常基本的,但不是从C角度来看.

它还表示您不能从另一个类实例访问实例变量,除非它们是公共的.