OC的時(shí)候篡诽,在init方法中給class一些創(chuàng)建過程中必填的屬性涣觉,是很常用的方法了
比如
{
self = [super initWithFrame:frame];
if (self) {
self.buttonClickBlock = buttonClick;
}
return self;
}```
如此的簡(jiǎn)單明
swift匯總init方法被限制了些許嚷节,用過許多次了但也是一知半解吞鸭,有些問題雖然很淺顯俊扳,也著實(shí)讓人惱火远寸,小小的init,錯(cuò)了這么多次屠凶,忽略什么convenience
- 第一種就是這了驰后,按照OC的方式,寫一個(gè)init之后阅畴,會(huì)提示`initWithCoder`必須要實(shí)現(xiàn),這個(gè)好解決,自動(dòng)補(bǔ)齊就行了
![圖片.png](http://upload-images.jianshu.io/upload_images/5315139-90dff26dd9e63fae.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
- 補(bǔ)齊之后又來了
![圖片.png](http://upload-images.jianshu.io/upload_images/5315139-71e0e2b170e7cdfd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
什么鬼迅耘,明明在里面賦值了贱枣,怎么還不行!原來`application`是子類的屬性颤专,子類的屬性必須要在init之前創(chuàng)建纽哥,此時(shí)明顯在init之前了
- 好嘛,我后super栖秕,總行了吧
![圖片.png](http://upload-images.jianshu.io/upload_images/5315139-f4184d61dd7bbe76.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
shit春塌,又說我不能提前用title。簇捍。只壳。
- 過好歹是一直給著提示,最終:
![圖片.png](http://upload-images.jianshu.io/upload_images/5315139-65dcb0f0c7c9404e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
#### 總結(jié)
init的時(shí)候暑塑,除去convenience什么的不說吼句,單單init方法中,就要分兩部分寫事格,子類自有的屬性惕艳,需要在super之前創(chuàng)建,而父類所擁有的屬性驹愚,需要在`super.init`之后賦值远搪,
> 其實(shí)從OC轉(zhuǎn)變過來的我有個(gè)疑問,不是應(yīng)該調(diào)完***super.init***之后才創(chuàng)建了當(dāng)前實(shí)例么逢捺,之前set屬性是給誰set的谁鳍?