Chcę użyć kategorii do stworzenia metody na oryginalnej klasie dostępnej również jako własność.Kategorie celu C: Czy mogę dodać właściwość dla metody, która nie należy do mojej kategorii?
Klasa A:
@interface ClassA
- (NSString*)foo;
@end
Klasa A kategoria
@interface ClassA (Properties)
- (void)someCategoryMethod;
@property (nonatomic, readonly) NSString *foo;
@end
Teraz, kiedy to zrobić, wydaje się działać (EDIT: Może to nie działa, to nie robi narzekać, ale widzę dziwność), ale to daje mi ostrzeżenia, ponieważ nie syntetyzuję własności w mojej kategorii realizacji. Jak mogę powiedzieć kompilatorowi, że wszystko jest w porządku, skoro oryginalna klasa syntetyzuje właściwość dla mnie?
Właściwości są (głównie) tylko cukrem dla metody '-foo' i' -setFoo'. Nie można dodawać żadnych dodatkowych zmiennych instancji w kategoriach, ale można zdefiniować te metody. Składnia @property jest opcjonalna, ale sugerowana (nie jestem pewien, czy to działa). –
Dla każdego, kto próbuje dodać nieruchomość z podłożem ivar (również w tej kategorii), zobacz: http://oleb.net/blog/2011/05/faking-ivars-in-objc-categories-with- associative-references/ – Senseful
możliwy duplikat [Objective-C: Property in Category] (http://stackoverflow.com/questions/8733104/objective-c-property-in-category) – hfossli