NSString özelliği: kopya yoksa korumak mı?
Hadi bir sınıf string
özellik adı ile SomeClass
aradım ki:
@interface SomeClass : NSObject
{
NSString* name;
}
@property (nonatomic, retain) NSString* name;
@end
Adı bu durumda bu hatalı davranışa neden olabilir. NSMutableString
devredilebilir anlıyorum.
- Genel olarak dizeleri içinher zaman
retain
yerinecopy
öznitelik kullanmak iyi bir fikir mi? - ""Herhangi bir özelliği daha verimli "-ed korumak" özelliği? kopyalanır
CEVAP
NSCopying
Protokole uygun değişmez değer bir sınıf olan öznitelikleri için, hemen hemen her zaman @property
bildirimi copy
belirtmek gerekir. retain
belirtme olduğunu hiç bir zaman böyle bir durumda istediğim bir şey.
Bunu neden istiyorsunuz?:
NSMutableString *someName = [NSMutableString stringWithString:@"Chris"];
Person *p = [[[Person alloc] init] autorelease];
p.name = someName;
[someName setString:@"Debajit"];
Akım değeri Person.name
özelliği farklı olacak olmasına bağlı olarak mülkiyet ilan retain
copy
— @"Debajit"
eğer özellik olarak işaretlenmiş retain
ama @"Chris"
eğer özellik olarak işaretlenmiş copy
.
Hemen hemen tüm durumlarda bu yanaönlemekonun arkasından bir nesnenin özniteliklerini değiştirme özellikleri onları temsil eden işaretlemeniz gerekir copy
. (Ve aslında içinde retain
yerine copy
kullanmayı unutmayın gerekir ayarlayıcı @synthesize
kullanmak yerine kendiniz yazarsanız.)
ARK altında NSString bir özelliği güçl...
Objective-C 101 (vs atamak korumak) NS...
Nasıl bir görüntü PİL kullanarak yenid...
Pozisyon Sol özelliği kaldırmak için n...
Kütüphane mi? Statik? Dinamik? Yoksa Ç...