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

  • Jeremy Gallman

    Jeremy Gallm

    11 NİSAN 2012
  • Nightmare2005

    Nightmare200

    14 Ocak 2007
  • SuicideSheeep

    SuicideSheee

    8 Ocak 2012