iOS懒加载

作者: ManoBoo | 来源:发表于2015-12-10 16:34 被阅读730次

    懒加载:

    也就是延迟加载,以UI控件为例,通常用到这个控件的时候再进行一系列的初始化操作,在移动端中,内存相形见绌,所以有时懒加载可以一定程度得减轻内存占用

    举例:

    @interface lazyAdd() @property (nonatomic,strong) UIButton *loginButton; @end

    @implementation lazyAdd
    - (void) viewDidLoad{ [self.loginButton addTarget:self action:@selector(toLogin) forControlEvents:UIControlEventTouchUpInside]; };

    - (UIButton *)loginButton{ if(!_loginButton) { _loginButton = [[UIButton alloc] initWithFrame:CGRectZero]; } return _loginButton; }
    @end

    分析:

    懒加载的原理:重写了对象的 getter方法
    上面代码中 viewDidLoad中 self.loginButton 调用了loginButton的getter方法
    - (UIButton *)loginButton方法就是重写过后loginButton的getter方法,这时会加载控件

    优点:

    ①不需要再把控件的初始化操作写在viewDidLoad中,代码看着更为简洁
    ②模块更为集中,高内聚、低耦合。

    注意:在 重写getter方法时,不要调用self.loginButton,否则会造成死循环,自己调用自己的getter方法,一直调,一直调。。。。。。

    相关文章

      网友评论

      • RiversMa:有道理 :smile:
      • RiversMa:优点我真没看出来呢?
        我创建初始化都在ViewDidLoad里
        ManoBoo:@RiversMa 不是啊,你在ViewDidLoad里面初始化了全部控件,然后用户并没有点击按钮,这样来说,创建那个弹出框不就没有必要了,对吧
        RiversMa:@ManoBoo 不对,逻辑还是有问题,即使我不是懒加载,那肯定也是我点击按钮才开始加载弹出框的,所以内存上也是没有起到省空间的作用。如果是控件本身你不加载,他也无法显示啊
        ManoBoo:比如,这个页面有一个按钮,点击按钮弹出一个框,用户不点击你就不需要加载这个控件,省内存~,其实类似于延迟加载

      本文标题:iOS懒加载

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