sınıfının örnek özelliklerini belirler İnit yöntemi içinde bir yöntemi çağırmak için zaten orada olan bir yöntem çağrısı aracılığıyla, init olamaz özellikleri . Esasen, UIView alt sınıflarının, init'te bazı alt görünümleri ekleyen bir sınıfa sahibim ve bu alt bölümlerin bazıları, sınıfın örnek değişkenleridir. 'yöntemi çağrısında kendini kullanılması super.init öz başlatır önce' merak ediyorum
class MyView: UIView {
var collectionView: UICollectionView
convenience init() {
self.init(frame:CGRectZero)
}
override init (frame : CGRect) {
super.init(frame : frame)
addSubviews()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
addSubviews()
}
func addSubviews(){
self.collectionView = UICollectionView()
}
}
Şimdi problem benim sınıfları başlatılıyor önce süper init arayamayacağımı gelir iç özellikleri (Property 'self.collectionView' super.init aramada inialized değil), ama aynı zamanda benim özel arayamazsınız super.init öncesinde bu değişkenleri başlatma yöntemi, bu başlatmadan önce kendini kullanamaz. Örnek değişkenini isteğe bağlı yapabileceğimin farkındayım, ancak daha az zarif görünüyor, çünkü her zaman başlatılacağını biliyorum (ve daha fazlası var, bu sadece basitleştirilmiş bir versiyon). Tüm örnek değişkenlerimi isteğe bağlı yapmadan bunu gerçekleştirmenin herhangi bir yolu var mı?
DÜZENLEME: sonuçta benim soru neden hızlı öncesinde super.init çağıran bir yöntemi çağırmak dis-izin vermez düşünüyorum
?
override init (frame : CGRect) {
addSubviews()
super.init(frame : frame)
}
final func addSubviews(){
self.collectionView = UICollectionView()
}
ve
override init (frame : CGRect) {
self.collectionView = UICollectionView()
super.init(frame : frame)
}
başlatılmış edilmemiş bazı özelliklerini kullanabilir yapacak varsa, örtük özellikler Çizelgesi opsiyoneller yapabiliriz. – Moritz
@ EricD. Şu anda bunu yapıyordum, ama ben aslında tüm –
özelliklerini varsayılan olarak – user3441734