一、關(guān)于swift class初始化

很久不寫swift了嘹屯,回頭再想拿它寫App時發(fā)現(xiàn)攻询,忘了。州弟。钧栖。。婆翔。

那就從頭再來拯杠,邊學(xué)邊寫寫筆記,供自己擠地鐵的時候看一眼~

因為臭毛病啃奴,上來開始就是class潭陪,然后按照我在oc里留下的習(xí)慣,接著寫初始化方法最蕾,然后就怎么寫都不對畔咧,是要搞什么鬼,就是個初始化呀揖膜!

正文:

swift里所有的class初始化規(guī)則:


屏幕快照 2018-01-03 下午4.11.48.png

舉例:

1.當(dāng)前class為基類誓沸,所有屬性都有默認值時,可以有類的初始化方法壹粟,也可以不實現(xiàn)類的初始化方法拜隧。當(dāng)不實現(xiàn)類的初始化方法時,編譯器會為類提供默認的初始化方法趁仙,構(gòu)造生成的實例的每個屬性的值都為默認值洪添。

class Person {
    var name :String?
    var age :Int=0
}

此種情況下也可以為類實現(xiàn)初始化方法。(下文中構(gòu)造方法即初始化方法)

當(dāng)不指定默認值時雀费,類必須實現(xiàn)指定構(gòu)造方法(designed)

class Person {
    var name : String
    var age : Int
    
    init () {
        name = ""
        age = 0
    }
}

2.當(dāng)class有父類時干奢,指定構(gòu)造器必須調(diào)用其直接父類的的指定構(gòu)造器

class Person : NSObject {
    var name : String
    var age : Int
    
    init (name:String) {
        self.name = name
        self.age = 0
        super.init();
    }
}

子類也可以復(fù)寫父類的designed構(gòu)造方法

class Person : NSObject {
    var name : String
    var age : Int
    
    override init () {
        self.name = ""
        self.age = 0
        super.init()
    }
}

但是調(diào)用父類的designed的方法之前,必需要初始化子類所有屬性的值

3.當(dāng)子類有convenience構(gòu)造方法時盏袄,convenience構(gòu)造方法必需要調(diào)用designed構(gòu)造方法

class Person : NSObject {
    var name : String
    var age : Int
    
    init(name:String, age:Int) {
        self.name = name;
        self.age = age;
        super.init()
    }
    
   convenience init (name:String) {
    self.init(name:name,age:0);
    }
    
   convenience init(age:Int) {
        self.init(name: "Mingming",age:age)
    }
}

總結(jié):
1. 每個class 保證至少有一個初始化方法忿峻,可以是默認的,也可以是designed的

2.保證初始化完成后辕羽,每個property都有一個初始值逛尚,無論是定義時聲明的,還是初始化時賦值的刁愿。

3. 如果class有繼承關(guān)系绰寞,當(dāng)子類class不實現(xiàn)構(gòu)造方法時,子類將自動從父類class繼承初始化方法。

4.當(dāng)class的所有屬性滤钱,在定義時顯示或隱式的給出了默認值觉壶,那么當(dāng)不寫當(dāng)前類的初始化方法,編譯器會為該類生成默認的初始化方法件缸。如果铜靶,屬性定義時部分未給出默認值,也不實現(xiàn)類的構(gòu)造方法停团,則編譯報錯。

5.class的初始化方法掏熬,分為designed和convenience兩種佑稠,designed初始化方法,是類的完整構(gòu)造方法旗芬,也可以說是基礎(chǔ)構(gòu)造方法舌胶,需要保證類的所有屬性都具備初始值。convenience構(gòu)造方法是類的便捷構(gòu)造方法疮丛,提供某些初始化完成后的特色操作幔嫂,根據(jù)需求,對類做一些特殊處理誊薄。convenience初始化方法必須要調(diào)用designed初始化方法履恩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市呢蔫,隨后出現(xiàn)的幾起案子切心,更是在濱河造成了極大的恐慌,老刑警劉巖片吊,帶你破解...
    沈念sama閱讀 219,110評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件绽昏,死亡現(xiàn)場離奇詭異,居然都是意外死亡俏脊,警方通過查閱死者的電腦和手機全谤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來爷贫,“玉大人认然,你說我怎么就攤上這事÷眩” “怎么了季眷?”我有些...
    開封第一講書人閱讀 165,474評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長卷胯。 經(jīng)常有香客問我子刮,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,881評論 1 295
  • 正文 為了忘掉前任挺峡,我火速辦了婚禮葵孤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘橱赠。我一直安慰自己尤仍,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,902評論 6 392
  • 文/花漫 我一把揭開白布狭姨。 她就那樣靜靜地躺著宰啦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪饼拍。 梳的紋絲不亂的頭發(fā)上赡模,一...
    開封第一講書人閱讀 51,698評論 1 305
  • 那天,我揣著相機與錄音师抄,去河邊找鬼漓柑。 笑死,一個胖子當(dāng)著我的面吹牛叨吮,可吹牛的內(nèi)容都是我干的辆布。 我是一名探鬼主播,決...
    沈念sama閱讀 40,418評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼茶鉴,長吁一口氣:“原來是場噩夢啊……” “哼锋玲!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起涵叮,我...
    開封第一講書人閱讀 39,332評論 0 276
  • 序言:老撾萬榮一對情侶失蹤嫩絮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后围肥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體剿干,經(jīng)...
    沈念sama閱讀 45,796評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,968評論 3 337
  • 正文 我和宋清朗相戀三年穆刻,在試婚紗的時候發(fā)現(xiàn)自己被綠了置尔。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,110評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡氢伟,死狀恐怖榜轿,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情朵锣,我是刑警寧澤谬盐,帶...
    沈念sama閱讀 35,792評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站诚些,受9級特大地震影響飞傀,放射性物質(zhì)發(fā)生泄漏皇型。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,455評論 3 331
  • 文/蒙蒙 一砸烦、第九天 我趴在偏房一處隱蔽的房頂上張望弃鸦。 院中可真熱鬧,春花似錦幢痘、人聲如沸唬格。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽购岗。三九已至,卻和暖如春门粪,著一層夾襖步出監(jiān)牢的瞬間喊积,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評論 1 272
  • 我被黑心中介騙來泰國打工庄拇, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留注服,地道東北人韭邓。 一個月前我還...
    沈念sama閱讀 48,348評論 3 373
  • 正文 我出身青樓措近,卻偏偏與公主長得像,于是被迫代替她去往敵國和親女淑。 傳聞我的和親對象是個殘疾皇子瞭郑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,047評論 2 355