Swift 開發(fā)之懶加載的實(shí)例詳解
/// A display link that keeps calling the `updateFrame` method on every screen refresh. private lazy var displayLink: CADisplayLink = { self.isDisplayLinkInitialized = true let displayLink = CADisplayLink(target: TargetProxy(target: self), selector: #selector(TargetProxy.onScreenUpdate)) displayLink.add(to: .main, forMode: self.runLoopMode) displayLink.isPaused = true return displayLink }()
public var priority: Float { get { return internalTask.priority } set { internalTask.priority = newValue } }
一個(gè)VC上放了一個(gè)按鈕,然后點(diǎn)擊按鈕打印剛剛定義的懶加載對(duì)象names,按理說“--------------”應(yīng)該只打印一次。
/* 用到時(shí)再加載 多次使用只加載一次 */ lazy var names :[String] = { let names = ["why", "lmj", "swd"] print("------") 按理說應(yīng)該只打印一次 return names }() //方式一:僅僅創(chuàng)建button lazy var btn1:UIButton = UIButton() //方式二:可以設(shè)置更多btn的屬性 lazy var btn :UIButton = { let btn = UIButton() btn.setTitle("按鈕", for: .normal) btn.setImage(UIImage(named:""), for: .normal) return btn }()
點(diǎn)擊按鈕打印
//MARK: 點(diǎn)擊事件 func buttonClick(_ sender:UIButton) { print("----/(names.count)") }
看看控制臺(tái)的打印結(jié)果:
----------3----3----3----3
從以上結(jié)果可以看出“--------------”確實(shí)只打印了一次。
如有疑問請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選