iOS 开发之懒加载

懒加载,其实就是延时加载。它将对象的创建延迟到了需要对象的时候,这样就减少了内存开销,但是会降低效率。

Objective-C 的懒加载实现

其实,对于 OC 来说。懒加载就是利用 @property 的特性,为属性生成 get 和 set 方法,懒加载就是调用它的 get 方法。如果不重写它的 get 方法的话,它会报错,原因是调用如下方法,会返回空指针。

- (NSArray *)dataArray{ return _dataArray}

所以,我们按如下方式来重写我们的 get 方法。

@property (nonatomic,strong)NSMutableArray *messages;

- (NSMutableArray *)messages
    {
       if (_messagess ==nil) {

           self.messages = [NSMutableArrayarray];

        }
       return_messages;
    }

这样,就防止了成员属性为没有赋值的情况。

Swift 懒加载的实现及原理

Swift 懒加载就是一段闭包代码块,只会执行一次。
在 Swift 存储的属性必须初始化,确认类型,或者使用可选类型。因此,我们需要使用 var 和 lazy 关键字。

lazy 属性:lazy 属性的代码块只会调用一次, lazy 修饰的是一个存储类型。
必须使用 var ,而不使用 let 定义延时加载的原因是: 因为 let 关键字定义的是常量,而常量必须在实例创建时赋值。

// Swift 实现懒加载 
lazy var box : UIView = {
        () -> UIView in
        let view = UIView()
        return view
    }()

根据上面的 demo ,我们可以总结出 Swift 定义懒加载的规则,即后面通过等号赋值一个闭包,闭包后面必须加上()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值