gpt4 book ai didi

objective-c - objective-c 中 self.myivar 和 self->myivar 的区别

转载 作者:行者123 更新时间:2023-12-05 08:59:11 25 4
gpt4 key购买 nike

您好,我知道在使用箭头符号 (->) 访问 C 中的成员时,无需每次都使用星号和点号 (* .)需要访问一个对象。

但是在 Objective-C 中,self.myivarself->myivar 有什么区别吗?我注意到它们都适用于我的情况,我将 myivar 声明为属性。

最佳答案

But in Objective-C is there any difference between self.myivar and self->myivar?

是的,有区别。假设foo是指向对象的指针:

foo->bar相当于(*foo).bar其中点表示获取实例变量的成员访问运算符 bar .

foo.bar相当于[foo bar] ;也就是说,它发送消息 -bar foo指向的对象.这可能只会返回 foo 中的任何内容的 bar实例变量,但它可以做其他事情。甚至可能没有名为 bar 的实例变量.只要有一个方法叫做 -bar , 然而, foo.bar已验证。还应该有一个 -setBar:方法,如果你使用 foo.bar作为作业的左侧,例如:foo.bar = baz; .

注意虽然self是 Objective-C 中的关键字,它始终充当指向对象的指针。 self 没什么特别的关于访问属性或实例变量。我用过 foo作为上面对象指针的名称,以证明属性/ivar 访问对任何对象指针的工作方式相同,但您可以替换为 self对于 foo以上。

关于objective-c - objective-c 中 self.myivar 和 self->myivar 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17151035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com