• ios lazying load


    初步写一些自己对于lazyload的看法吧。这篇文章主要针对普通view,对于image相关的的懒加载,准备过几天研究一下在写。

    懒加载,又称为延迟加载。通常用法,你有一个UITextField类型的property,简单定义为userNameTextField,但是你不在初始化方法里为其alloc/init,它就只是一个指针,不会占用内存。

    只是加载到你预想加载到的View上。如:[self addSubview:self.userNameTextField];//其中self为view,.userNameTextField为你声明的属性名字。

    显而易见的是,以上的指定是在view初始化的时候完成的。

    另外最重要的一点是,上面在空加载的时候,一定要使用点语法,也就是咱们所说的getter方法。

    然后呢?就需要我们重写userNameTextField的getter方法了。重写方法:

    - (UITextField *)userNameTextField

    {

    IF(_userNameTextField == nil){

    _userNameTextField =[ [UITextField alloc]initWithFrame:CGRectMakeZero];

    _userNameTextField.borderStyle = ...//在访问器里判断此property的指针是否为空,若为空,就alloc/init,这时才真正生成这个对象

    }

    return _userNameTextField;

    }

    最后建议大家将Frame的设置写到layoutSubviews之中,代码如下

    - (void)layoutSubviews

    {

    __userNameTextField.frame = .....

    }

    最终达到的效果就是,除非这个对象被使用,否则它永远不会真正生成,也就不会占用内存。

     

    其他LazyLoad的思想都是这样:拖到最后一刻,万不得已了,才开始占用资源,这在iPhone这种内存较少的设备上是很有必要的。

  • 相关阅读:
    转载:使用单独的log4net类
    反射方法
    log4net 的配置问题和使用扩展的TGLOG.DLL
    office2010 x64 Retrieving the COM class factory for component with CLSID {000209FF00000000C000000000000046} failed due to the following error: 800
    sharepoint2013 错误2
    sp2013版本区别
    sps2013安装错误
    发光动画
    关于html5缓存部分比较详细的说明
    httpmodule sharepoint
  • 原文地址:https://www.cnblogs.com/yulang314/p/3550634.html
Copyright © 2020-2023  润新知