/ / Dlaczego właściwości Objective-C są niewygodne? - cel C

Dlaczego właściwości celu C są niewygodne? - cel C

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 № 1

Wł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.