//
// ViewController.swift
import UIKit
class 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.swift
import UIKit
class 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的区别