#objective-c #macos #methods #parameters
#objective-c #macos #методы #параметры
Вопрос:
Привет, я новичок в objective c, и я вижу это довольно часто, когда читаю документацию разработчика.
Существуют методы с именами setEditable или setWhateverName и IsEditable или isWhateverName
В чем разница между набором «blabla» и is «blabla»
и примером может быть класс NSButton
-setAlternateTitle
и -alternateTitle
или
Класс NSImageView
-isEditable
и -setEditable:
Я думаю, что последний в обоих примерах принимает параметр, а первые — нет. Правильно ли это?
Ответ №1:
Они называются мутаторными методами. Это методы, которые вы используете для доступа к различным свойствам Objective-C, которые в основном являются переменными-членами класса (так называемые переменные ivar или переменные экземпляра), за исключением того, что вы не можете получить к ним прямой доступ. Вы можете получить доступ к ivar только с помощью методов setter и getter .
Метод getter получает текущее значение свойства. Обычно ему присваивается имя, идентичное рассматриваемому свойству (например, -alternateTitle
) для не булевых свойств, или имя с is
префиксом (например, -isEditable
) для булевых свойств.
Метод setter устанавливает новое значение для свойства. Обычно ему присваивается имя имени свойства с префиксом set
, например -setEditable:
.
Например:
if ([myObject isEditable]) // Is the object editable?
/* do stuff */ ;
...
[myObject setEditable:YES]; // Make it editable
Ответ №2:
-setAlternateTitle
и -alternateTitle
являются установщиком и получателем по умолчанию (например NSObject
, или int
) на основе стандартных соглашений об именовании.
setEditable
и isEditable
является обычным установщиком и получателем для свойств boolean ( BOOL
) . В логическом случае это улучшает читаемость. Обратите внимание, что изменение здесь относится только к получателю.
Ответ №3:
Существует шаблон для поселенцев и добытчиков.
Для ивар-файлов, отличных от BOOL
- установщик имеет префикс «set»: «setMyIvar» — обратите внимание на заглавную букву «M».
- получатель — это просто имя ivar: «myIvar» — обратите внимание, что нет префикса «get». *
Это значения по умолчанию, созданные свойством, например:
@property (nonatomic, retain) (NSString *)myString;
Для BOOL ivars существует два шаблона:
- установщик имеет префикс «set»: «setMyBoolIvar» — обратите внимание на заглавную букву «M».
-
получатель — это просто имя ivar: «myBoolIvar» — обратите внимание, что нет префикса «get». *
или
- установщик имеет префикс «is»: «isMyBoolIvar» — обратите внимание, что нет префикса «get» и прописной буквы «M».
Это значения по умолчанию, созданные свойством, например:
@property (nonatomic, assign) (BOOL *)myBoolIvar;
или соответственно
@property (nonatomic, assign, getter=isMyBoolIvar) (BOOL *)myBoolIvar;