//// 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的区别
新闻热点
疑难解答