SORU
23 NİSAN 2011, CUMARTESİ


Hangi doğru, nil veya NULL, mark&; Objective-C blok""?

Eğer Objective-C blok için bir şey geçmek istiyorum, ne kelime, NULL nil kullanmalıyım? Objective-C blok Objective-C nesne biliyorum () ama işlevi bir işaretçi olarak temsil çünkü bu soruyorum.

NULL nil 0x0 bir işaretçi gösterir, ancak anlamsal olarak farklı. Bu konuda endişeliyim.

CEVAP
23 NİSAN 2011, CUMARTESİ


Blok işlev işaretçileri olarak temsil edilir. Blok olarak temsil ediyorlar, ve bu bildiride ^ sembolü ile gösterilir. Kaputun altında, tek benzerlik call sözdizimi. Aksi takdirde, her ikisi de çok, çok farklıdır.

Genellikle faydalı yöntemlerini çağırmak için. Eğer çöp toplama, kullanmasanız bile . mesela, ^strong>gerekeğer daha sonra onları tutmak istiyorsanız, blok copy yöntemini çağırmak için. Otomatik korur sayısı gelişiyle birlikte, bu ARC pointer kuralları Block_copy makro kullanarak engel beri hatta bir bloğu kopyalamak için tek yoldur.

NULL derleyici, ya da sadece 0 (void*)0 bağlı olarak. Bu işaretçi her türlü işe yarar. Ancak, çünkü dil kuralları Objective-C, bir uyarı eğer sen denemek için bir mesaj göndermek için bir tür olamaz dökme doğrudan id (ve bir hata kullanırsanız ARC).

Blok mesaj göndermek için yararlı olabilir bu yana, onlar için nil kullanmalısınız.


[DEĞİŞTİR] nil NULL kullanarak aynı ikili kod sonuçlanacak açık olalım. Sürekli seçiminiz muhtemelen blok Objective-C olarak mı görüyorsunuz nesne olsun veya olmasın dayalı olmalıdır. Bu retain release kendi aramaları yazmak zorunda kaldığınız günlerde daha büyük bir olaydı, ama şimdi ARK senin için tüm bellek yönetimi işini yapar.

Eğer ARC bir şeydi önce blok kullandıysanız, muhtemelen Objective-C sanıyorlar nesneler. Eğer değilse, o zaman muhtemelen onlar olduğunu/fark olduğunu sanmıyorum. Orada hala birkaç emanetler kimliklerini dili (örneğin, bir __weak __unsafe_unretained işaretçi blok), ama çoğunlukla, fark ihmal edilebilir. Birini seçin ve sopa ile çalışın. Objective-C nesne olarak benim blokları düşünüyorum.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chuck Testa

    Chuck Testa

    14 AĞUSTOS 2011
  • Google Analytics

    Google Analy

    25 ŞUBAT 2008
  • jpmkm1

    jpmkm1

    4 NİSAN 2008