В чем разница между использованием методов доступа obj-c и использованием точечного синтаксиса?

С тех пор, как я начал разработку 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];

person dkaranovich    schedule 11.08.2009    source источник
comment
Почти точная копия stackoverflow.com/questions/1249392, заданного всего за 2 дня до этого. Ответы на этот вопрос более полные и полезные, чем здесь. Было бы лучше сделать более полный поиск, прежде чем спрашивать, но 2 вопроса лучше, чем 0 вопросов. :-)   -  person Quinn Taylor    schedule 11.08.2009


Ответы (3)


Это не имеет большого значения, это одно и то же. Точечный синтаксис удобен для вас, и я чувствую, что он делает ваш код чище.

Единственный случай, когда я обнаружил, что использование точечного синтаксиса вызывает предупреждение или ошибки компилятора, - это если у вас есть объект id, даже если вы знаете, что у него есть это свойство.

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

Тип объекта статически проверяется с помощью файла . синтаксис, но не с синтаксисом []. Это означает, что вы не можете использовать . если тип объекта не указан, и что его полезно использовать, когда он указан, поэтому компилятор поможет вам больше.

person Drew Hoskins    schedule 11.08.2009

Синтаксис точки в Objective-C по сути является сокращением для использования методов доступа. Сообщение по-прежнему отправляется через метод доступа. Надеюсь это ответит на твой вопрос

person CarbonX    schedule 11.08.2009