Swift3.0--懒加载

//
//  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的区别



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值