Swift 開發之懶加載的實例詳解
/// 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 } } 一個VC上放了一個按鈕,然后點擊按鈕打印剛剛定義的懶加載對象names,按理說“--------------”應該只打印一次。
/* 用到時再加載 多次使用只加載一次 */ lazy var names :[String] = { let names = ["why", "lmj", "swd"] print("------") 按理說應該只打印一次 return names }() //方式一:僅僅創建button lazy var btn1:UIButton = UIButton() //方式二:可以設置更多btn的屬性 lazy var btn :UIButton = { let btn = UIButton() btn.setTitle("按鈕", for: .normal) btn.setImage(UIImage(named:""), for: .normal) return btn }() 點擊按鈕打印
//MARK: 點擊事件 func buttonClick(_ sender:UIButton) { print("----/(names.count)") } 看看控制臺的打印結果:
----------3----3----3----3
從以上結果可以看出“--------------”確實只打印了一次。
如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答