SORU
10 Ocak 2011, PAZARTESİ


Objective-C Özel Durumlar

Sadece iPhone programlama kursu tamamladım. Dersin bir parçası olarak gördüm

  • Objective-C özel durum işleme @try yönergeyi kullanarak sağlar
  • Sistem kütüphane özel durum işleme, return nil tercih kullanmaz

İstesem almalıyım özel durum işleme için yeni bir kod yazdım (örneğin yazarsam hem ön uç ve mantık kodu arasındaki iletişimi onlara ellerimi) ama ben söylendi hayır, olmamalı kullanmak özel durumlar için yeni bir kod. (Ama durmak için başarısız oldu, sonra sınıfı, belki de sebebi açık.. Daha sonra olur) diye düşündüm taşındım

Elbette istisnalar return nil daha üstündür? Seni yakalamak belirli bir tip değilsin cazip Yoksay onları görmezden gelerek dönüş türü bir fonksiyonu olan normalde başarılı, metin mesajları hangi kaydedilebilir, onlar izin kodunuzu ana odaklanmak normal durumda ve böylece daha okunabilir. Why to use exceptions.

Ne düşünüyorsun? Antrenörüm Objective-C özel durumlar kullanmak için değil mi? Eğer öyleyse, neden?

CEVAP
10 Ocak 2011, PAZARTESİ


Güvenli olmayan kaynakları otomatik olarak yönetilen olduğu durumlarda istisna atar. Bu kılavuz, başvuru sayma kullandıkları gibi Kakao çerçeve (ve komşu çerçeveler) durum böyledir.

Eğer bir istisna varsa, release herhangi bir yığın sızıntısına neden olur, gevşemek tarafından atlamak arayın. Bu, tüm kaynaklar bir proses sonlandırılıyor OS döndürülür beri kurtar gitmeyecek eminseniz sadece tothrowing sınırı olmalıdır.

Ne yazık ki, NSRunLooponları yaymak tüm özel durumları yakalamak için eğilimindedir, eğer bir olay sırasında atarsanız, bir sonraki olay için devam edersiniz. Bu, açıkçası, çok kötü. Bu nedenle, sadece atma daha iyi.

Bu sorun, eğer herhangi bir kaynak Objective-C nesne tarafından temsil edilen doğru çıkacak gibi çöp toplama Objective-C, kullanırsanız azalır. Ancak, Objective-C nesne sarılı olmayan C kaynaklar (dosya tanımlayıcıları veya mallocayrılan bellek gibi) hala sızdırıyor.

Bu yüzden, sonuçta, atmayın.

Kakao API sizin de bahsettiğiniz gibi bu birkaç geçici çözüm vardır. nil NSError** desen dönen iki kişiler.

ARC için açıklamalar

ARC kullanıcıları veya tam istisna güvenliği devre dışı bırakmak için seçebilirsiniz. Özel güvenlik etkinleştirildiğinde, ARC kod kapsamı öldürüldüğü zaman güçlü referansları serbest bırakmak için, güvenli bir istisna kullanmak için yapılması oluştururkodunuzda. ARC özel destek programını etkin bile nereye attığına dikkat edilmeli onları istisna desteği etkinleştirmek için harici kütüphaneleri (ve özellikle seni yakalamak nerede) yama olmaz.

ARC özel durum desteği -fobjc-arc-exceptions etkin veya -fno-objc-arc-exceptions ile devre dışı bırakılabilir. Varsayılan olarak, Objective-C devre dışı ama Objective-C etkindir .

Tam özel güvenlik Objective-C devre dışı varsayılan olarak çünkü Çınlama yazarlar varsayalım Objective-C programları değil kurtarmak için bir istisna zaten, çünkü orada büyük bir kod boyutu, maliyet ve küçük bir performans cezası ile ilgili olan temizleme. Objective-C , diğer taraftan, C zaten temizleme kod bir sürü tanıttı, ve insanlar çok daha fazlası aslında özel güvenlik ihtiyacı vardır.

Bu ARC specification on the LLVM website tüm.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dogbert files

    Dogbert file

    12 Ocak 2012
  • EatingIn

    EatingIn

    12 EKİM 2013
  • SRI International

    SRI Internat

    30 NİSAN 2008