美文网首页
iOS懒加载的一些思考

iOS懒加载的一些思考

作者: 我思__故我在 | 来源:发表于2017-04-12 09:36 被阅读399次

iOS懒加载的本质就是重写属性的get方法,当调用该属性的get方法时才去初始化该对象。
敲黑板划重点了:我前几天有一个思路,是结合懒加载来调用网络请求,完成后测试运行未发现问题,但是在进行代码优化时发现一些缺陷,今天分享之... ...

一般我们的懒加载是这样的

- (NSArray *)TitleNameArray{
    
    if (!_TitleNameArray) {
        
        _TitleNameArray = @[@[@"持卡人姓名",@"卡号"],
                           @[@"银行",@"持卡人身份证号"],];
    }
    
    return  _TitleNameArray;
}

结合网络请求后我这样写

- (NSArray *)bankInforArray{
    
    if (!_bankInforArray) {
        
        [AgentServiceData getAgentBankName:UserNO  success:^(id result) {
            
            if ([result[@"IsOK"] integerValue] == 1 } {
                
                _bankInforArray = [AgentAddBankAccountModel arrayOfModelsFromDictionaries:result[@"List"] error:nil];
                
                [self.tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForRow:0 inSection:1]] withRowAnimation:UITableViewRowAnimationNone];
            }
            
        }];
    }
    
    return _bankInforArray;
}

注意:懒加载调用内部不能用 **点语法 ** 或者 发消息 调用该属性,因为这两种方法本质都是调用get方法,会造成死循环。

重点来了:该页面是基于UItableView,我发现每次刷新页面时会多次调用网络请求。那么为什么呢?因为网络请求是需要时间的!!!即我每次使用self. bankInforArray调用时,都会进入懒加载方法,可能第二次,第三次,甚至第四次调用时,第一次调用的网络请求才成功返回数据,那么直到此时_bankInforArray才不会为空,那么将导致该网络请求方法被调用了3次之多。

总结:懒加载适用于两种情况:只需要初始化一次的一些属性 没有时间延迟的情况。

相关文章

  • iOS懒加载的一些思考

    iOS懒加载的本质就是重写属性的get方法,当调用该属性的get方法时才去初始化该对象。敲黑板划重点了:我前几天有...

  • Swift的懒加载和只读属性的介绍

    懒加载 在 iOS 开发中,懒加载是无处不在的 懒加载的格式如下: lazy var person: Person...

  • iOS-UI-懒加载

    原文找不到了 iOS-UI-懒加载 1.懒加载基本 懒加载——也称为延迟加载,即在需要的时候才加载(效率低,占用内...

  • 2018-12-21

    iOS开发中懒加载遇到的坑 正常写一个懒加载对象 - (MAMapView*)mapView{ if(nil=...

  • iOS 数组 NSArray 遍历 懒加载总结

    iOS开发之懒加载 iOS中数组遍历的方法及比较

  • iOS开发——懒加载

    懒加载的定义 懒加载也称为延迟加载,即在需要的时候才加载(效率低,占用内存小)。iOS设备的内存有限,如果程序在启...

  • # 懒加载

    在 iOS 开发中,懒加载是无处不在的 懒加载的格式如下: 懒加载本质上是一个闭包 以上代码可以改写为以下格式 懒...

  • iOS开发之懒加载

    iOS开发之懒加载 在iOS开发中几乎经常用到懒加载技术,比如我们存放网络数据的数组,控制器的view,控件的自定...

  • iOS中的懒加载

    iOS开发中 我们经常使用懒加载1.懒加载的好处,让控件和对象在最需要加载的时候加载。这样可以节省内存空间,因为我...

  • iOS 懒加载

    懒加载:也称延时加载,即在对象用到的的时候才加载。其实懒加载,就是所谓的重写对象的get方法,当系统或者开发者调用...

网友评论

      本文标题:iOS懒加载的一些思考

      本文链接:https://www.haomeiwen.com/subject/hjmuattx.html