使用obj-c访问器和使用点语法有什么区别?

时间:2009-08-11 03:35:27

标签: objective-c iphone macos accessor

自从我开始进行iPhone开发以来,我一直很困惑,哪种方式是以类的形式访问数据的最佳方式。

假设我有一个名为MyClass的类,其中包含:

@interface MyClass : NSObject {
    int myInt;
}

@property (nonatomic, assign) int myInt;

在实施中,最好这样做:

myObject.myInt = 1;

还是这个?

[myObject setMyInt:1];

这也是读取价值的。

int newInt = myObject.myInt;

VS

int newInt = [myObject myInt];

3 个答案:

答案 0 :(得分:8)

这并不重要,它们是一回事。点语法是一种便于您使用的方法,我觉得它可以使您的代码更清晰。

我发现使用点语法抛出警告或编译错误的一种情况是,如果你有一个id对象,即使你知道它有该属性。

id someReturnedObject = [somethingObject someMysteryObjectAtIndex:5];
int aValue = 0;
aValue = someReturnedObject.value; // warning
aValue = [someReturnedObject value]; // will just do it

答案 1 :(得分:2)

使用静态检查对象的类型。语法,但没有[]语法。这意味着你无法使用。如果没有指定对象的类型,并且在它被使用时是有益的,那么编译器会帮助你更多。

答案 2 :(得分:0)

Objective-C中的Dot语法本质上是使用访问器方法的简写。该消息仍然通过访问器方法发送。希望能回答你的问题