Swift 4 構(gòu)造方法init的理解

零纺蛆,構(gòu)造函數(shù)

1吐葵,一種特殊的函數(shù)
2,主要用來在創(chuàng)建對(duì)象是桥氏,初始化對(duì)象
3温峭,給對(duì)象的成員變量設(shè)置初始值
4,Swift支持函數(shù)重載识颊,所有構(gòu)造函數(shù)都是init
5诚镰,作用是分配空間奕坟,設(shè)置初始值

注意:
1,oc的初始化是從類繼承關(guān)系鏈清笨,從父類開始逐級(jí)向子類初始化
2月杉,swift的初始化,是先從子類開始抠艾,逐級(jí)向父類初始化
3苛萎,非optional屬性,都必須要在構(gòu)造器中設(shè)置初始值检号,從而保證對(duì)象在被實(shí)例化的時(shí)候腌歉,屬性都被正確的初始化
4,在調(diào)用父類構(gòu)造函數(shù)之前齐苛,必須保證本類的屬性已經(jīng)完成初始化
5翘盖,swift中的構(gòu)造函數(shù)不用寫func關(guān)鍵字
6,默認(rèn)的構(gòu)造函數(shù)不能給本類的屬性分配空間
7凹蜂,如果重載了構(gòu)造函數(shù)馍驯,并且沒有實(shí)現(xiàn)父類的init方法,系統(tǒng)不再提供init函數(shù)(默認(rèn)會(huì)提供的)

一玛痊,構(gòu)造器分兩類:

1汰瘫,指定構(gòu)造器;
2擂煞,便利構(gòu)造器混弥;

二,每一個(gè)類至少有一個(gè)指定構(gòu)造器(子類默認(rèn)有一個(gè))

1对省,指定構(gòu)造器是類的主要構(gòu)造器蝗拿,初始化的所有屬性,要在指定構(gòu)造器賦值官辽,并且要在當(dāng)前構(gòu)造器中蛹磺,調(diào)用父類合適的指定構(gòu)造器

三粟瞬,便利構(gòu)造器是類的次要構(gòu)造器同仆,你需要讓便利構(gòu)造器去調(diào)用同一個(gè)類中的指定構(gòu)造器,并將這個(gè)指定構(gòu)造器中的參數(shù)填上你想要的默認(rèn)參數(shù)

Init 方法必須遵循幾條規(guī)則:
1裙品,指定構(gòu)造器必須調(diào)用他直接父類的指定構(gòu)造器俗批;
2,便利構(gòu)造器必須調(diào)用同一個(gè)類中的其它初始化方法市怎;(初始化方法可以是便利構(gòu)造器岁忘,也可以是指定構(gòu)造器,歸結(jié)是必須要調(diào)用到指定構(gòu)造器)区匠;
3干像,便利構(gòu)造器在最后必須調(diào)用本類的指定構(gòu)造器帅腌;(如果本類沒有指定構(gòu)造器,那么就要調(diào)用本類的默認(rèn)指定構(gòu)造器)
4麻汰,只有指定構(gòu)造器才可以調(diào)用父類指定構(gòu)造器速客,而便利構(gòu)造器是不可以的

init 機(jī)制:
1,第一階段實(shí)例的所有屬性被初始化五鲫;
2溺职,第二階段實(shí)例的所有屬性可以再次調(diào)整以備之后使用
Swift 的編譯器會(huì)對(duì)初始化的方法進(jìn)行安全地檢查以保證實(shí)例的初始化可以被安全正確的執(zhí)行:
1,指定構(gòu)造器必須確保所有被類中提到的屬性在代理向上調(diào)用父類的指定構(gòu)造器前被初始化位喂,之后才能將其它構(gòu)造任務(wù)代理給父類中的構(gòu)造器
2浪耘,指定構(gòu)造器必須先向上代理調(diào)用父類中的指定構(gòu)造器,然后才能為任意屬性賦值
3塑崖,便利構(gòu)造器必須先調(diào)用一個(gè)類中的其它構(gòu)造器七冲,然后才可以為屬性賦值
4,構(gòu)造器在第一階段構(gòu)造完成之前规婆,不能調(diào)用任何實(shí)例方法癞埠,不能讀取任何實(shí)例屬性的值,self不能被引用聋呢。

階段一:簡(jiǎn)單說是苗踪,子類屬性都已經(jīng)賦值,完成內(nèi)存的初始化削锰,然后向上(父類—>子類鏈)通铲,重復(fù)子類的操作,直到構(gòu)造器鏈的最頂部器贩,所有的屬性以及內(nèi)存被完全初始化颅夺,才進(jìn)入階段二
階段二:從頂部構(gòu)造器鏈向下,每個(gè)構(gòu)造器鏈中類的指定構(gòu)造器都有機(jī)會(huì)進(jìn)一步定制實(shí)例蛹稍。構(gòu)造器此時(shí)可以訪問self吧黄,它的屬性并調(diào)用實(shí)例方法等。唆姐。
簡(jiǎn)單的說是拗慨,代碼里面,便利構(gòu)造器調(diào)用父類指定構(gòu)造器之前奉芦,不能使用self赵抢,屬性及方法的調(diào)用,如果是本類的指定構(gòu)造器声功,self和屬性可以在調(diào)用父類指定構(gòu)造器之前調(diào)用烦却,但是實(shí)例方法,必須要在調(diào)用父類指定構(gòu)造器之后才可以調(diào)用

Init 的繼承與重載
Swift中子類不會(huì)繼承來自父類的所有構(gòu)造器先巴,這樣可以防止錯(cuò)誤的繼承并使用父類的構(gòu)造器生成錯(cuò)誤的實(shí)例

關(guān)于init的繼承:
1其爵,如果子類沒有定義指定構(gòu)造器冒冬,默認(rèn)會(huì)繼承父類所有的指定構(gòu)造器
2,如果子類提供了所有父類指定構(gòu)造器的實(shí)現(xiàn)摩渺,它將自動(dòng)繼承所有父類的便利構(gòu)造器

參考:
1窄驹,重點(diǎn)在論述,比較全面:https://my.oschina.net/hejunbinlan/blog/470123
2证逻,有代碼演示:https://www.cnblogs.com/Alex-sk/p/5528760.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末乐埠,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子囚企,更是在濱河造成了極大的恐慌丈咐,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件龙宏,死亡現(xiàn)場(chǎng)離奇詭異棵逊,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)银酗,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門辆影,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人黍特,你說我怎么就攤上這事蛙讥。” “怎么了灭衷?”我有些...
    開封第一講書人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵次慢,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我翔曲,道長(zhǎng)迫像,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任瞳遍,我火速辦了婚禮闻妓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掠械。我一直安慰自己由缆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開白布份蝴。 她就那樣靜靜地躺著犁功,像睡著了一般氓轰。 火紅的嫁衣襯著肌膚如雪婚夫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,185評(píng)論 1 284
  • 那天署鸡,我揣著相機(jī)與錄音案糙,去河邊找鬼限嫌。 笑死,一個(gè)胖子當(dāng)著我的面吹牛时捌,可吹牛的內(nèi)容都是我干的怒医。 我是一名探鬼主播,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼奢讨,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼稚叹!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拿诸,我...
    開封第一講書人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤扒袖,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后亩码,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體季率,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年描沟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了飒泻。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡吏廉,死狀恐怖泞遗,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情席覆,我是刑警寧澤刹孔,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站娜睛,受9級(jí)特大地震影響髓霞,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜畦戒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一方库、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧障斋,春花似錦纵潦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至遂庄,卻和暖如春寥院,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背涛目。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工秸谢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凛澎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓估蹄,卻偏偏與公主長(zhǎng)得像塑煎,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子臭蚁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 這是16年5月份編輯的一份比較雜亂適合自己觀看的學(xué)習(xí)記錄文檔最铁,今天18年5月份再次想寫文章,發(fā)現(xiàn)簡(jiǎn)書還為我保存起的...
    Jenaral閱讀 2,733評(píng)論 2 9
  • 123.繼承 一個(gè)類可以從另外一個(gè)類繼承方法,屬性和其他特征垮兑。當(dāng)一個(gè)類繼承另外一個(gè)類時(shí), 繼承類叫子類, 被繼承的...
    無灃閱讀 1,380評(píng)論 2 4
  • 本章將會(huì)介紹 存儲(chǔ)屬性的初始賦值自定義構(gòu)造過程默認(rèn)構(gòu)造器值類型的構(gòu)造器代理類的繼承和構(gòu)造過程可失敗構(gòu)造器必要構(gòu)造器...
    寒橋閱讀 767評(píng)論 0 0
  • 本頁(yè)包含內(nèi)容: [TOC] 類里面的所有存儲(chǔ)型屬性——包括所有繼承自父類的屬性——都必須在構(gòu)造過程中設(shè)置初始值甥角。 ...
    伍哥___閱讀 442評(píng)論 0 0
  • 構(gòu)造過程 構(gòu)造過程是使用類网严、結(jié)構(gòu)體或枚舉類型的實(shí)例之前的準(zhǔn)備過程。在新實(shí)例可用前必須執(zhí)行這個(gè)過程嗤无,具體操作包括設(shè)置...
    蠱毒_閱讀 723評(píng)論 0 2