//// ViewController.swiftimport UIKitclass ViewController: UIViewController { //初始化并且分配空間,會提前創建 //移動開發,延遲加載,減少內存消耗,就是懶加載 //懶加載 - lazy /** 1.能夠延遲創建 2.能夠解除解包的煩惱(最大的好處) */ //懶加載簡單寫法 lazy var label : DemoLabel = DemoLabel(); //懶加載完整寫法,實際是一個閉包,日常開發不建議這么寫 /** 1. {} 包裝代碼 2. () 執行代碼 日常開發: 1.閉包中智能提示不靈敏 2.出現self.還需要注意循環引用 */// lazy var label = { () -> DemoLabel in// var l = DemoLabel();// // //設置label的屬性....// // return l;// }() override func viewDidLoad() { super.viewDidLoad() setupLabel(); } PRivate func setupLabel() { //插入視圖中 //解包 - 為了參與計算,addSubview 用 subviews 數組記錄控件,數組中不允許插入nil self.view.addSubview(label); label.text = "hello"; label.sizeToFit(); label.center = view.center; } }//// DemoLabel.swiftimport UIKitclass DemoLabel: UILabel { //重寫構造函數 //xib 不會調用 override init(frame: CGRect) { super.init(frame: frame); setupUI(); } //initWithCoder -> 使用xib / sb //提示:所有UIview及其子類,一旦重寫構造函數 //必須實現 initWithCoder 方法,以保證提供兩個通道 required init?(coder aDecoder: NSCoder) { //禁止在xib/sb中使用本類 fatalError("init(coder:) has not been implemented") } private func setupUI() { print("hello"); } }相關文章:Swift3.0 -- 懶加載和OC的區別
新聞熱點
疑難解答