1. 程式人生 > >iOS 幾種初始化的分析比較

iOS 幾種初始化的分析比較

整天都在初始化,好幾種初始化方法,今天有時間了,就來總結一下iOS中的幾種常見初始化方法。

1,下邊這一種是最簡單的初始化,不過一定要記著,在初始化的時候一定要先呼叫父類的初始化。

- (instancetype)init {

    if (self = [superinit]) {

    }

returnself;

}

2.下邊這一種也是初始化,但是這個初始化是用於檢視載入nib檔案,從nib中載入物件例項時,用下邊的方法來初始化這些例項物件,可以是XIB中巢狀XIB,也可以是一個View或者Controller直接來拿XIB,都會呼叫這個方法。

- (instancetype

)initWithCoder:(NSCoder *)aDecoder {

    self = [superinitWithCoder:aDecoder];

returnself;

}

3.這種就是和上邊一種相反,就是在我們寫的程式中沒有nib檔案的時候,就是用純程式碼控制的檢視內容,掉用下邊的方法來例項化物件。

- (instancetype)initWithFrame:(CGRect)frame {

    self = [superinitWithFrame:frame];

returnself;

}

4.當物件是UIViewController的子類,那麼就必須呼叫下邊的方法呼叫那個NIB檔案初始化自身,即使沒有使用NIB檔案也會呼叫這個方法,如果呼叫這個方法,並傳遞的兩個引數為空(nil),然後類會呼叫-loadView去讀區一個名字和物件相同的NIB檔案,來初始化自身,如果沒有這樣的nib檔案,就必須呼叫-setView:來設定一個self.view,或者過載loadView方法

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {

    if (self = [superinitWithNibName:nibNameOrNilbundle:nibBundleOrNil]) {

//DO SOME INIT

    }

returnself;

}

5.自己定義初始化方法了,那樣就根據自己的需要來寫這個初始化的方法

- (instancetype)initWithWidth:(CGFloat)width height:(CGFloat)height ....

6.- (void)awakeFromNib方法

這個方法也是XIB中慣用的方法,不過這個不是初始化的,這個是,怎麼說呢,這是當我們的XIB中約束沒拉好,或者XIB中需要增加或者刪除控制元件時,我們可以在這個方法中寫約束,寫增加或者減少的控制元件,改變Frame等。