十八、Swift3.0之懶加載和initWithCoder方法

自定義繼承自UILabel的DemoLabel搔耕。所有UIView及子類在開(kāi)發(fā)中,一旦重寫了構(gòu)造函數(shù)痰娱,必須要實(shí)現(xiàn)initWithCoder函數(shù)弃榨,以保證純代碼和XIB/SB兩個(gè)通道。其中fatalError()方法梨睁,如果使用了XIB或SB鲸睛,并且寫上了這句代碼柜与,就會(huì)崩潰通铲。

class DemoLabel: UILabel {
    //重寫構(gòu)造函數(shù)
    override init(frame: CGRect) {
        super.init(frame: frame)
        setupUI()
    }
    //initWithCoder  這是xib/SB的入口
    //提示:所有UIView及子類在開(kāi)發(fā)中,一旦重寫了構(gòu)造函數(shù)贮折,必須要實(shí)現(xiàn)initWithCoder函數(shù)遍坟,以保證兩個(gè)通道
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        //寫上這句代碼拳亿,如果用xib開(kāi)發(fā)會(huì)崩潰,禁止xib和SB使用本類
        //也就是如果使用了XIB或SB政鼠,并且寫上了這句代碼风瘦,就會(huì)崩潰
        fatalError()
        setupUI()
    }
    func setupUI() {
        print("設(shè)置界面")
    }
}

懶加載基本寫法。

 //懶加載的基本實(shí)現(xiàn)
    //1公般、借助關(guān)鍵詞lazy
    //2万搔、懶加載的好處:延遲創(chuàng)建、避免解包的煩惱
       //3官帘、懶加載要指明類型
    lazy var label: DemoLabel = DemoLabel()

懶加載的完整寫法如下:

    //懶加載本質(zhì)上是一個(gè)閉包
    //僅供參考瞬雹,實(shí)際開(kāi)發(fā)不建議這樣寫:因?yàn)殚]包中只能提示不好,而且還要注意循環(huán)引用
    lazy var label = {() -> DemoLabel in
       let l = DemoLabel()
        return l
    }()

Swift和OC中懶加載的區(qū)別:
OC中的懶加載刽虹,如果最開(kāi)始調(diào)用懶加載創(chuàng)建對(duì)象酗捌,中間再次將對(duì)象設(shè)置為nil,之后會(huì)再次調(diào)用懶加載方法。
Swift中的懶加載:如果想設(shè)置對(duì)象為nil胖缤,對(duì)象必須設(shè)置為可選尚镰。并且對(duì)象一旦設(shè)置為nil,懶加載不會(huì)再次執(zhí)行哪廓。換句話說(shuō)懶加載只會(huì)在第一調(diào)用的時(shí)候執(zhí)行閉包狗唉,然后將閉包的結(jié)果保存在對(duì)象的屬性中。

    //懶加載
    private lazy var label: UILabel? = UILabel()
    override func viewDidLoad() {
        super.viewDidLoad()
        label?.text = "sss"
        label?.sizeToFit()
        print(label)
        label = nil
        print(label)
    }

所以從上面我們可以得出:Swift中一定要注意不要主動(dòng)清理視圖或空間涡真,因?yàn)閼屑虞d不會(huì)再次創(chuàng)建分俯。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市哆料,隨后出現(xiàn)的幾起案子缸剪,更是在濱河造成了極大的恐慌,老刑警劉巖东亦,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件杏节,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡讥此,警方通過(guò)查閱死者的電腦和手機(jī)拢锹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門谣妻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)萄喳,“玉大人,你說(shuō)我怎么就攤上這事蹋半∷蓿” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵减江,是天一觀的道長(zhǎng)染突。 經(jīng)常有香客問(wèn)我,道長(zhǎng)辈灼,這世上最難降的妖魔是什么份企? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮巡莹,結(jié)果婚禮上司志,老公的妹妹穿的比我還像新娘。我一直安慰自己降宅,他們只是感情好骂远,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著腰根,像睡著了一般激才。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,475評(píng)論 1 312
  • 那天瘸恼,我揣著相機(jī)與錄音劣挫,去河邊找鬼。 笑死东帅,一個(gè)胖子當(dāng)著我的面吹牛揣云,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播冰啃,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼邓夕,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了阎毅?” 一聲冷哼從身側(cè)響起焚刚,我...
    開(kāi)封第一講書(shū)人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扇调,沒(méi)想到半個(gè)月后矿咕,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡狼钮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年碳柱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片熬芜。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡莲镣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出涎拉,到底是詐尸還是另有隱情瑞侮,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布鼓拧,位于F島的核電站半火,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏季俩。R本人自食惡果不足惜钮糖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望酌住。 院中可真熱鬧店归,春花似錦、人聲如沸赂韵。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)祭示。三九已至肄满,卻和暖如春谴古,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背稠歉。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工掰担, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人怒炸。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓带饱,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親阅羹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子勺疼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件捏鱼、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,123評(píng)論 4 61
  • 一执庐、深復(fù)制和淺復(fù)制的區(qū)別? 1导梆、淺復(fù)制:只是復(fù)制了指向?qū)ο蟮闹羔樄焯剩磧蓚€(gè)指針指向同一塊內(nèi)存單元!而不復(fù)制指向?qū)ο蟮?..
    iOS_Alex閱讀 1,392評(píng)論 1 27
  • 在工程中導(dǎo)入AFNetworking的庫(kù)以及ZJModelTool庫(kù) json 解析: ZJModelTool 是...
    亦晴工作室閱讀 339評(píng)論 0 1
  • 去拿快遞的時(shí)候看尼,遇見(jiàn)一位年紀(jì)很大的但依然還運(yùn)快遞的老爺爺递鹉,在感慨他勤勞,生活艱辛的同時(shí)藏斩,聽(tīng)到了他說(shuō)這樣一句話:我...
    忽爾今至閱讀 217評(píng)論 0 0
  • 哈灾茁,你問(wèn)我窜觉,最重要的事情是什么,我的答案是財(cái)富自由啊北专,早日迎娶白富美,走上人生巔峰旬陡。 當(dāng)然啦拓颓,以上后半句是開(kāi)玩笑的...
    戎馬未央閱讀 196評(píng)論 0 0