ios lazying load
2014-02-15 16:30
169 查看
初步写一些自己对于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这种内存较少的设备上是很有必要的。
懒加载,又称为延迟加载。通常用法,你有一个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开发之iPhone通过get和post方式请求asp.net webservice
- iOS atomic和nonatomic区别
- 【IOS】Object-C 中的Selector 概念
- 转:ios coredata 教程 详解
- Ios多线程编程:NSOperation和NSOperationQueue
- iOS: UIScrollView的属性scrollIndicatorInsets
- 【IOS】Instruments 使用教程
- iOS 7用户界面过渡指南
- iOS Application Manifest.plist的创建与编辑
- 学习iOS开发之使用ZBar扫描二维码中文乱码问题
- iOS开发之MediaPlayer框架的简易使用
- iOS摇一摇功能
- iOS ios8新特性之扩展详解
- iOS 8推送注册方式改变的问题
- ios--图片处理(修改、保存)
- IOS中类和对象还有,nil/Nil/NULL的区别
- ios 多线程
- 猫猫学IOS(十六)UI之XIB自定义Cell实现团购UI
- iOS蓝牙4.0开发(一)与外设通讯
- ios 获取 crash 日志