Jest to jednak bardziej narzekanie niż pytaniemoże ktoś ma na to kilka dobrych punktów. Więc jeśli chcesz, aby ivar w twojej klasie Objective-C miał metody accessor, musisz o tym wspomnieć 3 razy
SomeClass* _ivar;
@property (nonatomic,retain/assign/copy) SomeClass* ivar;
@synthesize ivar = _ivar;
i może po raz czwarty w metodzie dealloc. Czy nie byłoby wygodniej, gdyby podejście było podobne do adnotacji w stylu Java - w jednym miejscu przed faktyczną deklaracją ivar, po prostu coś takiego:
@property (nonatomic,retain,synthesize = ivar,dealloc) SomeClass* _ivar;
to również generuje metody accessor i dealloc - nakazuje deallocowi ivar w metodzie dealloc.
Odpowiedzi:
6 dla odpowiedzi № 1Właściwie nie musisz zadeklarować ivar - onimożna zsyntetyzować, jeśli po prostu zadeklarujesz dla nich właściwość. To powinno zsyntetyzować nazwę iVar dla Ciebie: (nie jest obsługiwane w starszych czasach uruchamiania - więc jedną z przyczyn tej pozornie nadmiarowej składni jest kompatybilność wsteczna ze starszymi platformami)
@interface MyClass : NSObject
{
}
@property(copy) NSString *name;
@end
...
@synthesize name;
W nowej wersji XCode (prawdopodobnie 4.0) nie będziesz musiał również używać @synthesize - domyślnie będą syntetyzowane właściwości.
Więc jak widzisz, celem c rozwija się, aby spełnić twoje życzenia :)
0 dla odpowiedzi nr 2
Xcode 4 niestety nie dokonuje automatycznej syntezy właściwości, ale dzięki ARC (automatyczne liczenie odwołań) nie musisz już martwić się zmiennymi dealloc i instancjami.