SORU
26 EKİM 2011, ÇARŞAMBA


Özellikleri ARC kullanırken dealloc nil için ayarlarım?

Otomatik Referans iOS 5 Sayma öğrenmek için çalışıyorum. Şimdi bu sorunun birinci bölümü kolay olmalıdır:

  1. Yaptığım doğru muDEĞİLaçık yazmak gerekiyor ARC kullanırken benim dealloc serbest-mülkiyet tablolar? Diğer kelimeler, aşağıdakileri yapar doğruDEĞİLbir açık lazım dealloc?

    @interface MyClass : NSObject
    @property (strong, nonatomic) NSObject* myProperty;
    @end
    
    @implementation MyClass
    @synthesize myProperty;
    @end
    
  2. Sonraki ve daha önemli sorum Transitioning to ARC Release Notes belge: bir satır geliyor

    (Aslında değildir) örnek değişkenleri serbest bırakmak zorunda değilsiniz, ama [kendi setDelegate:nil] YAY kullanarak derlenmiş değil bu sistem sınıfları ve diğer kod çağırmak gerekebilir.

    Bu bir soruyu akla getiriyor: nasıl dersleri YAY ile derlenmemiş olan biliyor musunuz? Ne zaman kendi dealloc oluşturma ve açıkça güçlü bir istinat özellikleri sıfır ayarı olmalıdır? Tüm NS ve UI çerçeve sınıfları özellikleri kullanılan açık deallocs gerektirir farz edebilir miyim?

ARC kullanırken manuel referans izleme, ama bu konuda nispeten daha az kullanırken ıvar bir özelliği desteğini bırakmadan uygulamaları ve başka bir yerde hakkında bilgi hazinesi vardır.

CEVAP
26 EKİM 2011, ÇARŞAMBA


Kısa cevaphayır, ARK altında dealloc özellikleri sıfır gerekmez.

Uzun cevap: Asla dealloc, manuel bellek yönetimi bile özellikleri sıfır.

Paso kaldırma kuvveti, serbest bırakmalısınızbugün ivan'ın. Özellikleri Nilling anlamına gelir dealloc (Eğer sınıf ya da alt sınıf, kanepe geçersiz kılar gibi) temas etmemeli kod çağırabilir çağıran belirleyiciler. Benzer şekilde KVO bildirimleri tetikleyebilir. Ivar serbest bırakmak yerine bu istenmeyen davranışları önler.

ARC, sistem eğer bu yaptığın şey yoksa bile dealloc uygulamak zorunda değilsiniz, böylece otomatik olarak sizin için herhangi bugün ivan'ın serbest bırakır. Eğer non-nesne özel işlem (6 ** için gereken örneğin ayrılmış arabellek) gereken bugün ivan'ın varsa, ancak, yine de dealloc ile uğraşmak zorunda.

Eğer herhangi bir nesne temsilci olarak kendinizi ayarladıysanız ayrıca, BM dealloc ilişki ([obj setDelegate:nil] arama hakkında bit) gerekir. ARC ile derlenmiş olmayan sınıflar üzerinde bu işi notun zayıf özelliklerini doğru bir selam. Eğer sınıf açıkça weak delegate özelliği işaretleri varsa o zaman zayıf özellikleri doğası sizin için nilled dışarı çıkartır anlamına gelir, çünkü bunu yapmak zorunda değilsiniz. Ancak eğer bu özellik işaretli assign o zaman nil de kendi dealloc, aksi takdirde sınıftır sol ile bir sarkan işaretçi ve olası kaza durumunda çalışır için kendi ileti temsilci. Bu sadece yurt dışı tutulan ilişkiler, delegeler gibi geçerlidir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • LearnCode.academy

    LearnCode.ac

    20 Aralık 2012
  • paulandstorm

    paulandstorm

    4 EYLÜL 2006