Bence, çoğu sınıfta, [super init] 'ten gelen dönüş değeri nil ise ve bunu standart uygulamalar tarafından önerildiği gibi kontrol ederseniz ve nil ise erken dönerseniz, temel olarak uygulamanız hala düzgün çalışmaz. Bunu bile bile, bunu düşünmek durumunda ise (kendini! = Nil) onay sınıfınızın düzgün çalışması için, orada, aslında zamanın% 99.99 do olmayan sıfır olarak gerek kendini. Şimdi, sebebi ne olursa olsun, herhalde [süper init] yaptığı dönüş nil, doğal çağrısı olduğunu varsayar çünkü büyük olasılıkla, zaten başarısız nerede temelde nil karşı çek temelde sınıfın arayana kova yukarı geçiyor başarılı.
Temelde, elde ettiğim şey, zamanın% 99,99'udur, if (self! = Nil) size daha fazla sağlamlık açısından bir şey satın almaz, çünkü parayı davetlinize kadar geçirirsiniz. Bunu gerçekten güçlü bir şekilde ele alabilmek için aslında tüm arama hiyerarşinizde kontroller yapmanız gerekir. Ve o zaman bile, size satın alacağı tek şey, uygulamanızın biraz daha temiz / sağlam bir şekilde başarısız olacağı. Ama yine de başarısız olur.
Eğer bir kütüphane sınıfı keyfi olarak [super init] sonucu nil döndürmeye karar verdiyse, hemen hemen her şeye uyuyorsunuz demektir ve bu daha çok kütüphane sınıfının yazarının uygulama hatası yaptığını gösterir.
Uygulamalar çok daha sınırlı bir bellekte çalıştığında bunun daha eski bir kodlama önerisi olduğunu düşünüyorum.
Ama C seviyesi kodu için, hala bir NULL işaretçisi karşı malloc () dönüş değerini kontrol ediyorum. Oysa, Objective-C için, aksine bir kanıt bulana kadar, genellikle if (self! = Nil) kontrollerini atlayacağım. Neden tutarsızlık?
Çünkü, C ve malloc seviyelerinde, bazı durumlarda aslında kısmen iyileşebilirsiniz. Oysa Objective-C'de, vakaların% 99,99'unda, [super init] sıfır döndürürse, başa çıkmaya çalışsanız bile temelde lanet olasısınız demektir. Sen de sadece uygulamanın çökmesine ve sonrasında ile başa çıkmasına izin verebilir.