0

При создании класса, декларация пространства BOOL свойство часто выглядит следующим образом:Именование шаблона для объектов-объектов категории Objective-C?

@property (nonatomic, getter=isActive) BOOL active; 

Для обычных классов и подклассов, называющих сорбент is<#Key#> имеет смысл, выглядит резким и приятно использовать в if отчетности.

Как насчет того, чтобы присвоить названия свойствам в категории?

Я просто реализует некоторые вспомогательные методы на NSView, когда все вдруг, все пошло отвратительный поворот:

@property (nonatomic, readonly, getter=bsd_isFieldEditorDelegate) BOOL bsd_fieldEditorDelegate; 

После добавления рекомендуемого префикса (bsd_ в моем случае), семантическое значение из вероятно, теряется. В этом случае, следует ли просто удалить имя получателя вообще или что?

Я просмотрел всю документацию, но я не смог найти окончательного ответа. Есть ли это, или я просто переусердствовал?

+0

как насчет isBsdFieldEditorDelegate? – Alex

+0

@Alex Я действительно думал об этом! Я просто не знаю, есть ли соглашение, над которым я должен следовать или нет. –

ответ

0

Вы НЕ МОЖЕТЕ использовать недвижимость в категории Объектив-C. Вместо этого вы должны использовать Associated object от Objective-C Runtime. Из-за этого атрибут свойства может не работать с ассоциированным объектом.

Ссылка: Objective-C: Property/instance variable in category

+0

Спасибо за ссылку. Однако, согласно документации Apple, «это допустимый синтаксис для включения объявления свойства в интерфейсе категории, но невозможно объявить дополнительную переменную экземпляра в категории. Это означает, что компилятор не будет синтезировать любую переменную экземпляра и не будет синтезировать любые методы доступа к свойствам. Вы можете написать свои собственные методы доступа в реализации категории, но вы не сможете отслеживать значение этого свойства, если оно уже не сохранено исходным классом ». Если вы заметили выше, я объявил свойство' readonly'. –

+0

Продолжение сверху комментария: Я не отслеживаю какое-либо состояние самостоятельно. Я просто проверяю окно просмотра, чтобы получить текущего первого ответчика. Затем я возвращаю, является ли он активным редактором полей для представления. Таким образом, мне не нужна переменная для отслеживания значения. –

+0

Почему вы не объявляете метод get вместо свойства? потому что в этом случае у свойства нет никакой причины. Просто объявите - (BOOL) bsd_isFieldEditorDelegate. –