iOS 幾種初始化的分析比較
阿新 • • 發佈:2019-01-28
整天都在初始化,好幾種初始化方法,今天有時間了,就來總結一下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等。