Jaki jest właściwy sposób pracy ze zmiennymi instancji (zadeklarowanymi na interfejsie), ich @property
i @synthesize
, podczas pracy w projekcie ARC? Co mam teraz zrobić, jest następujący:Właściwy sposób użycia zmiennych instancji/właściwości/synthetize z ARC
SomeClass.h:
@interface SomeClass : NSObject {
NSString *someString;
}
@property(nonatomic, copy) NSString* someString;
i SomeClass.m:
@implementation SomeClass
@synthesize someString;
- (void)someMethod {
self.someString = @"Foobar";
}
Chodzi o to, że istnieją inne metody, które działa podobnie jak przy użyciu tylko @ Obiekt:
SomeClass.h:
@interface SomeClass : NSObject
@property(nonatomic, copy) NSString* someString;
Uzyskiwanie dostępu do someString
bez self
:
SomeClass.m:
@implementation SomeClass
@synthesize someString;
- (void)someMethod {
someString = @"Foobar";
}
itd. Jestem nowy w Objective-C, jestem przyzwyczajony do Javy. Jaki jest zatem właściwy sposób pracy z atrybutami? Rozumiem, że szczególne przypadki będą miały szczególne zachowanie, ale jakie jest najlepsze podejście w ogóle? (ogólnie mam na myśli, że chcę uzyskać dostęp do zmiennej z samej klasy i "z zewnątrz" i chcę, aby ARC nadal działał poprawnie, np. nie muszę się martwić o wycieki pamięci)
Wystarczy zdefiniować właściwości. A jeśli używasz Xcode 4.5+, nie potrzebujesz nawet instrukcji syntezatora. Jest to uważane za właściwy sposób, ponieważ właściwości automatycznie utworzą iVars. Jeśli potrzebujesz użyć iVar, to jeśli w Xcode 4.5+, użyj "_" przed nazwą właściwości (ponieważ są one tworzone automatycznie), jeśli nie, stwórz je tak: @synthesize variable = _variable; – Petar
@ pe60t0 Konieczność rezygnacji z używania wyrażenia @ synthesize została wprowadzona za pomocą Xcode 4.4. –
Mój zły, nie mogę teraz edytować komentarza. – Petar