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

  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • Mismag822 - The Card Trick Teacher

    Mismag822 -

    18 EKİM 2008
  • The Exploiteers

    The Exploite

    4 Ocak 2011