初步写一些自己对于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这种内存较少的设备上是很有必要的。

ios lazying load的更多相关文章

  1. build dynamic libraries for iOS and load them at runtime

    编译了libmt.dylib, 和 test 程序调用,均正常.在xcode中显示调用正常,隐式调用则出现问题. 提示 dyld: Library not loaded. 即使存在在/usr/lib/ ...

  2. 下载判断Android和iOS

    //下载 function down(){ var url = ''; var u = navigator.userAgent, app = navigator.appVersion; var isA ...

  3. +load,+initialize原理

    +load,+initialize原理 1.load 父类的load方法在子类load方法之前调用,分类的load方法在原来类load方法之后调用,依赖类的load方法会在自己之前调用,总之所有的类的 ...

  4. audio和video元素

    目录 [1]HTML元素 audio video source track[2]API 方法 属性 事件 audio专有 前面的话 HTML5新增了两个与媒体相关的标签,让开发人员不必依赖任何插件就能 ...

  5. 原创:vsphere概念深入系列四:Nic Teaming若干问题

    参考文档:http://www.hyper-v.nu/archives/marcve/2013/01/lbfo-hyper-v-switch-qos-and-actual-performance-pa ...

  6. iOS - + initialize 与 +load

    一.+ initialize 方法和+load 调用时机 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一段描述:这个方法会在 第一次初始化这个类之前 被调用,我们用它来初始化 ...

  7. iOS UIWebView 载入https 网站出现NSURLConnection/CFURLConnection HTTP load failed (kCFStreamErrorDomainSSL,

    今天在载入https网站的时候遇到例如以下的错误问题.所以对自己之前写的iOS内嵌webview做了一些改动,能够让它载入http网站也能够让它载入https网站. 以下是我载入https网站的时候出 ...

  8. iOS load和initialize的区别

    可能有些还不清楚load和initialize的区别,下面简单说一下: 首先说一下 + initialize 方法:苹果官方对这个方法有这样的一段描述:这个方法会在 第一次初始化这个类之前 被调用,我 ...

  9. 运行百度语音识别官方iOS demo报错: load offline engine failed: 4001

    运行官方BDVRClientSample这个demo(ios版的),demo可以安到手机上,但是点“识别UI”那个按钮后“授权验证失败”.如果点“语音识别”那个按钮,控制台输出:2015-10-23 ...

随机推荐

  1. python-selenium-robotframework安装问题

    背景 当前系统安装了两个不同版本的python,分别是python27和python36(如图1),如图 说明 系统安装的两个python版本,python2中的python.exe默认不做修改:py ...

  2. iOS开发 - 多线程实现方案之NSThread篇

    NSThread API //类方法:创建一个线程 + (void)detachNewThreadWithBlock:(void (^)(void))block API_AVAILABLE(macos ...

  3. SpringBoot | 启动异常 | 显示bulid success 无 error信息

    可能原因是没有添加 web 依赖,检查pom里面是否有web <dependency> <groupId>org.springframework.boot</groupI ...

  4. 牛客寒假6-C.项链

    链接:https://ac.nowcoder.com/acm/contest/332/C 题意: 小B想给她的新项链染色. 现在有m种颜色,对于第i种颜色,小B有a_i单位的颜料,每单位颜料可以染项链 ...

  5. NOI2012 D2T1扩展欧几里得

    #include <bits/stdc++.h> using namespace std; #define ll long long ll extgcd(ll a,ll b,ll & ...

  6. wireshark工具集

    tshark 查看pcap文件第一个包的时间,当文件名不包含时间信息时非常有帮助 tshark -c 1 -T fields -e frame.time -r test.pcap dumpcap ed ...

  7. 移动端 Web 网页调试技巧

    原文出处: 盛瀚钦 本文主要列举了调试本地网页.查看测试环境网页的各种方法,涵盖了PC.iPad.移动端的调试技巧. 本文的不足之处在于,小溪里暂时还没有找到调试位于微信中和安卓各国产浏览器上的网页. ...

  8. ueditor单独调用图片上传

    很多人在问ueditor,如何单独使用图片上传功能,但是网上没有一篇能用的文档,没办法,我刚好也需要这个功能,花了3天时间(本人水平太菜,哎)终于知道怎么处理了,发出来给大家共享: 效果如下: 页面效 ...

  9. qq登录,新浪微博登录 ,接口开发

    给linux命令在线中文手册加了,qq登录和新浪微博登录,认证用的是auth2.0,并且用了js api和php api相结合的方式来做的.个人觉得这种方式,兼顾安全和人性化.以前写过一篇关于申请的博 ...

  10. Redis 数据导入导出,redis-dump命令

    安装redis-dump 工具 yum install ruby rubygems ruby-devel# 修改为国内源gem sources --add http://gems.ruby-china ...