Пользовательские методы доступа и "=" в свойствах? - PullRequest
1 голос
/ 05 сентября 2011

Можете ли вы сказать мне значение этих пользовательских средств доступа:

Зачем вам добавлять эту информацию рядом с установщиком:

@property (assign,getter=isSelected) BOOL selected;

и о установщике

@property (copy,setter=setDefaultTitle:) NSString* title;

это то же самое, что написать @synthesize title = defaultTitle?

Спасибо

Ответы [ 2 ]

2 голосов
/ 05 сентября 2011
@property (assign,getter=isSelected) BOOL selected;

в вашем заголовочном файле указывает, что вы хотите, чтобы другие классы могли использовать myObject.isSelected для доступа к этому свойству. Вы определяете это имя в общедоступном интерфейсе вашего класса.


@synthesize title = defaultTitle;

в вашем файле реализации указывает, что вы определили свойство с именем title для использования другими классами, но внутри вашего класса вы действительно хотите использовать имя defaultTitle. Обычно это делается, когда вы объявили свою собственную частную переменную экземпляра с именем defaultTitle, которую вы не хотите, чтобы люди изменяли напрямую.

1 голос
/ 05 сентября 2011

@property (assign,getter=isSelected) BOOL selected;

должен указывать метод получения в соответствии с соглашением об именах.См. Руководство Apple по цитированию:

Как правило, вы должны указывать имена методов доступа, которые соответствуют кодированию значения ключа (см. Руководство по программированию кодирования значения ключа) - общая причина использования декоратора геттера заключается в соблюдениисоглашение isPropertyName для логических значений.

@property (copy,setter=setDefaultTitle:) NSString* title; То же самое будет, если вы также укажете метод получения.Однако вы должны использовать @synthesize title = defaultTitle; для генерации правильных имен методов для ваших методов получения / установки.

...