В чем разница между использованием средств доступа obj-c и использованием точечного синтаксиса?
-
12-09-2019 - |
Вопрос
С тех пор, как я начал разработку 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 по сути является сокращением использования методов доступа.Сообщение по-прежнему отправляется через метод доступа.Надеюсь это ответит на твой вопрос