工作记录一:IOS中的懒加载lazyLoad
2014-11-26 08:25
330 查看
镔哥哥,初步写一些自己对于lazyload的看法。这篇文章主要针对普通view,的的懒加载,以及一些相关介绍。
懒加载,又称为延迟加载。通常用法,你有一个UITextField类型的property,简单定义为myuserNameTextField,但是你不在初始化方法里为其alloc/init,它就只是一个指针,不会占用内存。
只是加载到你预想加载到的View上。如:[self addSubview:self.myuserNameTextField];//其中self为view,.userNameTextField为你声明的属性名字。
显而易见的是,以上的指定是在view初始化的时候完成的。
另外最重要的一点是,上面在空加载的时候,一定要使用点语法,也就是咱们所说的getter方法。
然后呢?
1:就需要我们重写userNameTextField的getter方法了。重写方法:
- (UITextField *)myuserNameTextField//这就是懒加载(用到的时候才去调用,在本地存储,数据请求的时候经常用到)
{
IF(_myuserNameTextField == nil){
_myuserNameTextField =[ [UITextField alloc]initWithFrame:CGRectMakeZero];
_myuserNameTextField.borderStyle = ...//在访问器里判断此property的指针是否为空,若为空,就alloc/init,这时才真正生成这个对象
}
return _userNameTextField;
}
2:最后建议大家将Frame的设置写到layoutSubviews之中,代码如下
- (void)layoutSubviews
{
__userNameTextField.frame = .....
}
镔哥哥为了大家更容易理解为什么要调用layoutSubview,专门写了相关的介绍,方便大家理解:
layoutSubviews在以下情况下会被调用:
1、init初始化不会触发layoutSubviews
2、addSubview会触发layoutSubviews
3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
4、滚动一个UIScrollView会触发layoutSubviews
5、旋转Screen会触发父UIView上的layoutSubviews事件
6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件
最终达到的效果就是,除非这个对象被使用,否则它永远不会真正生成,也就不会占用内存。
记住:其他LazyLoad的思想都是这样:拖到最后一刻,万不得已了,才开始占用资源,这在iPhone这种内存较少的设备上是很有必要的。
懒加载,又称为延迟加载。通常用法,你有一个UITextField类型的property,简单定义为myuserNameTextField,但是你不在初始化方法里为其alloc/init,它就只是一个指针,不会占用内存。
只是加载到你预想加载到的View上。如:[self addSubview:self.myuserNameTextField];//其中self为view,.userNameTextField为你声明的属性名字。
显而易见的是,以上的指定是在view初始化的时候完成的。
另外最重要的一点是,上面在空加载的时候,一定要使用点语法,也就是咱们所说的getter方法。
然后呢?
1:就需要我们重写userNameTextField的getter方法了。重写方法:
- (UITextField *)myuserNameTextField//这就是懒加载(用到的时候才去调用,在本地存储,数据请求的时候经常用到)
{
IF(_myuserNameTextField == nil){
_myuserNameTextField =[ [UITextField alloc]initWithFrame:CGRectMakeZero];
_myuserNameTextField.borderStyle = ...//在访问器里判断此property的指针是否为空,若为空,就alloc/init,这时才真正生成这个对象
}
return _userNameTextField;
}
2:最后建议大家将Frame的设置写到layoutSubviews之中,代码如下
- (void)layoutSubviews
{
__userNameTextField.frame = .....
}
镔哥哥为了大家更容易理解为什么要调用layoutSubview,专门写了相关的介绍,方便大家理解:
layoutSubviews在以下情况下会被调用:
1、init初始化不会触发layoutSubviews
2、addSubview会触发layoutSubviews
3、设置view的Frame会触发layoutSubviews,当然前提是frame的值设置前后发生了变化
4、滚动一个UIScrollView会触发layoutSubviews
5、旋转Screen会触发父UIView上的layoutSubviews事件
6、改变一个UIView大小的时候也会触发父UIView上的layoutSubviews事件
最终达到的效果就是,除非这个对象被使用,否则它永远不会真正生成,也就不会占用内存。
记住:其他LazyLoad的思想都是这样:拖到最后一刻,万不得已了,才开始占用资源,这在iPhone这种内存较少的设备上是很有必要的。
相关文章推荐
- iOS工作记录7 :ios控件加载图片,plist,懒加载,序列帧动画,添加动画效果(实用例子)
- iOS 工作遇到问题记录
- iOS中的懒加载lazyLoad
- iOS工作小技巧及填坑记录
- IOS中的懒加载lazyLoad
- hitTest方法所做的工作,事件传递,图片的两种加载方式的区别,毛玻璃效果,记录一下
- IOS小技巧:属性的lazyload懒加载的使用
- 工作记录二:iOS开发工具CocoaPods(objective-c第三方库管理工具)实用技巧
- iOS工作记录9:项目单例(直接拉用)
- 工作记录8:iOS 传值问题总结(7种传值完美介绍)
- 【工作记录0018】Hightcharts 设置加载中动画背景图,防止页面假死
- 工作记录8:iOS 传值问题总结(7种传值完美介绍)
- IOS中的懒加载lazyLoad
- iOS工作记录11:提现功能 绑定淘宝账号功能
- iOS记录App、封装播放器、核心动画、加载框架、分段器、多种控件等源码
- iOS-OC中的lazyLoad(懒加载)
- 记录iOS懒加载以及懒加载不显示情况
- iOS工作记录六 :导航栏(基础实用)
- iOS开发经验之工作小知识记录
- ios学习记录 day38 UI14中级数据持久化(数据库) 上拉加载下拉刷新 打印当前时间