'。'之间的区别是什么?和' - >' iOS版?

时间:2012-11-20 10:59:45

标签: ios objective-c xcode syntax member-access

好的,我很困惑! 我曾经使用过 - >每当我访问我的实例对象时,现在我看到我在我的应用程序中设置它们之后:didFinishLaunching就像这样:

self->counter = [NSNumber numberWithFloat:0.0f];

在路上我被抛出一个异常,检查了我的调试器并看到该计数器指向<non objective c object>

我将行改为:

self.counter = [NSNumber numberWithFloat:0.0f];

现在我在调试器中看到我有另一个变量。

那么,这里发生了什么?

2 个答案:

答案 0 :(得分:3)

self->counter = [NSNumber numberWithFloat:0.0f];使用直接访问ivar。使用self,它等于counter = [NSNumber numberWithFloat:0.0f];,其中counter是ivar。也就是说self->是实例方法中的冗余范围限定。

self.counter = [NSNumber numberWithFloat:0.0f];[self setCounter:[NSNumber numberWithFloat:0.0f]];的语法糖。具体来说,声明动态地向对象的setter发送消息。 Although there are exceptions,你不应该在不处于部分构造/破坏状态时使用访问器。

答案 1 :(得分:2)

您在询问iVars和属性之间的区别。关于这个问题已经有了很好的答案here