SORU
4 EYLÜL 2009, Cuma


Objective-C 101 (vs atamak korumak) NSString

101 bir soru

Hadi araba veritabanı yapıyorum ki ve her araba nesnesi olarak tanımlanır:

#import <UIKit/UIKit.h>

@interface Car:NSObject{
    NSString *name;
}

@property(nonatomic, retain) NSString *name;

Neden @property(nonatomic, retain) NSString *name; @property(nonatomic, assign) NSString *name; değil mi?

assign sayaç retain olarak başvuru artırır. Ama kullanım name todo nesnenin üyesi olduğu için 6 ** neden kapsamında kendisi için.

Başka bir dış işlevini de değiştirir.

CEVAP
4 EYLÜL 2009, Cuma


"Kapsamı, bir nesne," Nesnel-C Kapsam kuralları, bir nesnenin ömrü ile ilgisi var — sayımı ile muhafaza her şey. diye bir şey yok

Genellikle örnek değişkenleri sahiplenmeye gerek. the Objective-C memory management rules bkz. retain bir özellik ile, emlak belirleyici yeni değerini mülkiyet iddiaları ve eski sahipliğini bırakmaz. assign bir özellik ile, çevredeki kodu sorumlulukları ve endişeleri ayrılığı terimi olarak dağınık olan bunu yapmak için vardır. Neden kullanırsınız assign malıdır durumlarda edemezsin korumak değeri (gibi olmayan nesne türleri gibi BOOL veya NSRect) veya zaman tutma bu istenmeyen yan etkileri.

Bu arada, bir NSString durumunda, mülkiyet doğru tür genellikle copy. Eğer birisi bir NSMutableString içinde geçerse altından dışarı değiştirmek olmaz bu şekilde geçerli olan ( —NSString bir tür).

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ☆ SUB4SUB CENTER! ☆ spam here

    ☆ SUB4SUB

    22 ŞUBAT 2010
  • Menglong Tav

    Menglong Tav

    18 Temmuz 2010
  • TV and Lust

    TV and Lust

    26 HAZİRAN 2006