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

  • DrePwn

    DrePwn

    22 Temmuz 2011
  • TheJoeycool2010

    TheJoeycool2

    12 Temmuz 2010
  • whatever

    whatever

    30 EYLÜL 2005