Настраиваемые и редактируемые

#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;