SORU
23 Aralık 2008, Salı


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 zamanretain yerine copy öznitelik kullanmak iyi bir fikir mi?
  • ""Herhangi bir özelliği daha verimli "-ed korumak" özelliği? kopyalanır

CEVAP
23 Aralık 2008, Salı


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.)

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amena

    Amena

    15 Kasım 2006
  • David MeShow

    David MeShow

    10 EKİM 2006
  • paulandstorm

    paulandstorm

    4 EYLÜL 2006