Objective-C學(xué)習(xí)筆記-init

1.如果一個(gè)類沒(méi)有實(shí)現(xiàn)init方法,那么在調(diào)用init初始化的時(shí)候所有成員變量都會(huì)被初始化為0

2.覆蓋NSObject的init方法,instancetype代表返回當(dāng)前類的實(shí)例,在舊版本OC里,還會(huì)使用id作為返回類型。因?yàn)榛惖臉?gòu)造函數(shù)有可能返回nil,所以這里需要判斷是否為空,這是蘋果公司推薦寫法,不過(guò)很多代碼沒(méi)有做這一步檢查

-(instancetype)init
{
    self=[super init]
    if (self){
        //初始化操作
    }
    return self;
}

3.你也可以創(chuàng)建帶有參數(shù)的構(gòu)造函數(shù),和Java不同,當(dāng)你創(chuàng)建一個(gè)構(gòu)造函數(shù)的時(shí)候,默認(rèn)的構(gòu)造函數(shù)依然存在

-(instancetype)initWithName:(NSString *)name
{
    self=[super init];
    if (self){
        //初始化操作
        self.name=name;

    }
    return self;
}

4.子類自定義了一個(gè)構(gòu)造函數(shù),但是使用的時(shí)候有可能不小心調(diào)用到基類的構(gòu)造函數(shù),這樣會(huì)導(dǎo)致子類的部分成員變量沒(méi)有被初始化,為了防止這種情況,需要重寫基類的構(gòu)造函數(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容