嗨我知道当使用箭头符号(->)访问C中的成员时,* .每次需要访问对象时都需要同时使用star和dot().
但在Objective-C中,self.myivar和之间有什么区别self->myivar?我注意到它们都适用于我的情况,我将myivar声称为属性.
但是在Objective-C中,self.myivar和self-> myivar之间有什么区别吗?
是的,有区别.假设这foo是一个指向对象的指针:
foo->bar等效于(*foo).bardot指示成员访问运算符获取实例变量的位置bar.
foo.bar相当于[foo bar]; 也就是说,它将消息发送-bar到指向的对象foo.这可能只是返回无论是在foo的bar实例变量,但它可以做其他事情.甚至可能没有名为的实例变量bar.只要有一个被调用的方法-bar,它foo.bar就是有效的.-setBar:如果您使用foo.bar作为作业的左侧,也应该有一种方法,例如:foo.bar = baz;.
请注意,虽然selfObjective-C中是关键字,但它始终充当指向对象的指针.self访问属性或实例变量没有什么特别之处.我使用foo作为对象名称指针上述证明财产/伊娃访问适用于任何对象的指针同样的方式,但你可以替换self为foo以上.
| 归档时间: |
|
| 查看次数: |
193 次 |
| 最近记录: |