2012-05-08 6 views
0

В Objective-C Я могу создавать категории для расширения класса. Я также могу добавить к ним свойства, поскольку они в основном являются только методами. Однако я не могу связать их с @synthesize или любым другим способом, который я знаю. Поэтому всякий раз, когда я пытаюсь использовать их, приложение будет разбиваться.Категории и свойства Objective-C

Есть ли какие-либо свойства в категориях или они просто возможны, потому что это нарушит логику языка, чтобы запретить им. Не могли бы вы дать мне сценарий, где определение свойства в категории имеет смысл?

+2

Смотрите мой ответ на ваш другой вопрос: http://stackoverflow.com/questions/10502539/objective-c-category-and-new-ivar (Почему вы спрашиваете по существу тот же вопрос дважды?) –

+0

Спасибо. Я думал, что, помимо решения моей конкретной проблемы, может быть интересно иметь более общий вопрос о том, какие свойства в категориях хороши. Однако ваш ответ, похоже, уже представлен. :) –

+0

Возможный дубликат [Objective-C: Property in Category] (http://stackoverflow.com/questions/8733104/objective-c-property-in-category) – hfossli

ответ

1

Основное использование определения свойства в категории заключается в создании расширения класса, с помощью категории при создании расширения класса, тогда мы можем определить свойство и синтезировать их также. Это способ добиться скрытия свойства для публичный доступ.

Вы можете проверить это для получения дополнительной информации - http://www.techpaa.com/2012/04/adding-properties-to-categories-and.html

+0

Категория НЕ является расширением: http://developer.apple.com/library/ios/#documentation/cocoa/conceptual/objectivec/chapters/occategories.html – giorashc

+0

удаленный downvote, так как ваш ответ действительно решает проблему, но я все еще поддерживаю Категории, не поддерживающие свойства – giorashc

+0

Связанные объекты! = Свойства – isaac

0

От The Objective-C Programming Language руководство

категория позволяет добавлять методы к существующему классу даже на один , для которого у вас нет источника. Категории - это мощная функция , которая позволяет расширить функциональность существующих классов без подкласса.

Поскольку вы хотите

добавить свойства к ним, поскольку они в основном только методы

Вы можете использовать категорию, чтобы добавить методы класса.

+0

и как насчет категории, используемой для расширений класса. – rishi

+0

@rishi В документации указано, что расширения класса аналогичны. Это означает, что расширения классов и категории - это две разные вещи. –

+1

Расширения классов и категории действительно очень разные. В расширении я могу определить свойство, но и синтезировать его. В категории я не могу синтезировать свойства. Но я также не могу создать иваров, чтобы я не мог реально реализовать геттеры и сеттеры для себя. –

Смежные вопросы