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
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, NSRunLoop
onları 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 malloc
ayrı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.
C stil's-özel durumlar kuralı; ST...
İstisnalar Yetiştirme arasındaki fark ...
BackgroundWorker işlenmeyen özel durum...
Objective c içinde Özel bir biçim dize...
Özel Durumlar veya Dönüş kodları terci...