2012-09-14 17 views
5

NSObject alt sınıfını kullanırken özel bir başlangıç ​​yönteminde self = [super init]; yazmak mantıklı mı? Başka bir sınıfı alt sınıflara ayırırken gerekli olduğunu biliyorum, çünkü özel bir başlatma işlemi olabilir, ancak NSObject init yöntemi herhangi bir şey yapar mı?NSObject init yöntemi bir şey yapar mı?

+4

İçeri girmesi iyi bir alışkanlıktır. – Kyle

cevap

9

Bir nesne başlatılıncaya kadar kullanılmaya hazır değildir. NSObject sınıfında tanımlanan init yönteminin başlatılması yoktur; sadece kendini geri döndürür.

Temel olarak, NSObject alt sınıfında [super init] numaralı telefonu aramak zorunda değilsiniz, ancak yine de öneririm. Bu sadece daha iyi bir tasarım. Üst sınıfı değiştirirseniz, yine de çalışır.

Kaynak: NSObject Class Reference.

+5

+1 için "Hala bunu öneririm" - NSObject uygulaması değişebilir, sınıfınızın üst sınıfını değiştirebilir, vb. Sınıfınızın görevi, sınıfının davranışları hakkında bir şeyler çıkarmaktır. – Tim

+0

Teşekkürler, bu mantıklı. :) –

+4

Hayır, gerçekten, senin kodun ** yanlış ** eğer kendini yapmıyorsan = [süper init ...]; '. NSObject’in uygulaması ne yapar? kırılganlığı en aza indirmek için deseni her yerde tutarlı bir şekilde kullanın ve belgelendirilmiş doğru kalıpları takip etmek daha fazla bakım gerektiren uygulamalara yol açtığından. – bbum

İlgili konular