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

dka*_*ich 0 iphone macos objective-c accessor

自从我开始进行iPhone开发以来,我一直很困惑,哪种方式是作为Class中的成员访问数据的最佳方式.

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

@interface MyClass : NSObject {
    int myInt;
}

@property (nonatomic, assign) int myInt;
Run Code Online (Sandbox Code Playgroud)

在实现中,最好是这样做:

myObject.myInt = 1;
Run Code Online (Sandbox Code Playgroud)

或这个?

[myObject setMyInt:1];
Run Code Online (Sandbox Code Playgroud)

这也适用于读取值.

int newInt = myObject.myInt;
Run Code Online (Sandbox Code Playgroud)

int newInt = [myObject myInt];
Run Code Online (Sandbox Code Playgroud)

Nei*_*eil 8

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

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

id someReturnedObject = [somethingObject someMysteryObjectAtIndex:5];
int aValue = 0;
aValue = someReturnedObject.value; // warning
aValue = [someReturnedObject value]; // will just do it
Run Code Online (Sandbox Code Playgroud)