SORU
13 HAZİRAN 2009, CUMARTESİ


İn her zaman 0 olarak başlatılır?

Güvenli ints her zaman Objective-C 0 başlatılmış saymak mı?

Daha spesifik olarak, int bugün ivan'ın ile yeni bir nesne örneği, bugün ivan'ın 0 değeri olduğunu varsaymak güvenli mi?

CEVAP
13 HAZİRAN 2009, CUMARTESİ


Evet, sınıf örnek değişkenleri her zaman 0 (veya nil, NULL false tam veri türüne bağlı olarak) başlatıldı. Objective-C 2.0 Programming Language:

alloc yöntem dinamik olarak bellek ayırır için yeni bir nesnenin örnek değişkenleri başlatır ve hepsini 0—, yani, dışında isa değişken birbirine bağlayan yeni bir örnek için sınıf.


2013-05-08 DÜZENLEYİN
Apple yukarıdaki belge (şimdi Wayback makinasına bağlı) kaldırmış gibi görünüyor. (Şu anda aktif) belgesi Programming With Objective-C benzer bir atıf içerir:

alloc yöntemi sıfıra ayarlayarak bellek nesnesinin özellikler için ayrılan açık olan bir diğer önemli görevi vardır. Bu bellek her zamanki sorun, daha önce saklı şeyi, çöp içeren önler, ama bir nesne tamamen başlatmak için yeterli değildir.


Ancak, busadeceörneğin gerçek bir sınıf değişkenleri; ayrıca POD türleri genel kapsamında ilan için doğrudur:

// At global scope
int a_global_var;  // guaranteed to be 0
NSString *a_global_string;  // guaranteed to be nil

Bir istisna dışındadeğilcalloc() açıkça hafızasını sıfırlar beri yerel değişkenler için de geçerlidir, veya calloc() veri malloc() realloc(); doğrudur, tahsis için ayırır.

Tek istisnası, o zaman Otomatik Referans Sayma (ARC) etkinleştirildiğinde, yığın işaretçileri için Objective-C nesne dolaylı olarak başlatıldı nil; ancak, yine de iyi bir uygulama için açıkça onları başlatmak için nil. Transitioning to to ARC Release Notes:

Yığın Değişkenleri nil ile Başlatılır

ARC, güçlü, zayıf ve autoreleasing kullanarak değişkenleri şimdi örtülü olarak nil ile başlatılır yığını

C (ve C nesneleri Objective-C kullanılıyor ), değişkenler de vardır örnek sınıfdeğilsıfır başlatıldı. Açıkça, yapıcı(ler) başlatmalısınız.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • dope2111

    dope2111

    29 HAZİRAN 2009
  • kamaniusilelis

    kamaniusilel

    10 HAZİRAN 2011
  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011