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

StackOverflow https://stackoverflow.com/questions/1258360

Вопрос

С тех пор, как я начал разработку iPhone, я был в некотором замешательстве относительно того, какой способ доступа к данным в качестве члена класса является лучшим.

Допустим, у меня есть класс MyClass, и в нем есть:

@interface MyClass : NSObject {
    int myInt;
}

@property (nonatomic, assign) int myInt;

В реализации лучше сделать так:

myObject.myInt = 1;

Или это?

[myObject setMyInt:1];

Это касается и чтения значения.

int newInt = myObject.myInt;

против.

int newInt = [myObject myInt];
Это было полезно?

Решение

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top