У меня есть категория в классе I, и эта категория соответствует протоколу, который требует свойства в его реализации. Однако, поскольку я в категории, я не могу синтезировать свойство в реализации категории. Из-за этого я не понимаю, как реализовать метод setter (когда я сохраняю свойство протокола readonly, он отлично работает, поскольку все, что мне нужно, это метод доступа).Категория iOS соответствует протоколу со свойствами: как реализовать
Это мой протокол:
@protocol SomeProtocol <NSObject>
@property (nonatomic) BOOL didDisplayRecommendation;
@end
Я знаю, что если я сделаю это, я получаю бесконечный цикл:
- (void)setDidDisplayRecommendation:(BOOL)didDisplayRecommendation
{
self.didDisplayRecommendation = didDisplayRecommendation;
}
Но когда я пытаюсь это я получаю ошибку компиляции:
- (void)setDidDisplayRecommendation:(BOOL)didDisplayRecommendation
{
_didDisplayRecommendation = didDisplayRecommendation;
}
Обратите внимание, что didDisplayRecommendation является свойством в протоколе. Каков наилучший способ обойти это? Заранее спасибо!
возможно дубликат [Objective-C Категория и новые Ивар] (http://stackoverflow.com/questions/10502539/ object-c-category-and-new-ivar) –
Не дублируется, не затрагивает вопрос о соответствии протоколам – Mason
Вам разрешено добавлять «специальные» свойства в категории с (at) свойством (неатомным, сохранить) MyClass * anObject - но в файле реализации все, что вы можете сделать, это (at) dynamic anObject, вы можете использовать функцию ассоциативных ссылок для маскировки других объектов вместо этого свойства. Он работает, и это не обходное решение, вам разрешено делать это в коммерческих приложениях, а также пропускает проверки протоколов. – unmircea