ios-关于懒加载
来源:互联网 发布:p2p交易量数据分析 编辑:程序博客网 时间:2024/04/29 22:42
接触ios开发也有段时间了,这里想总结一下自己对懒加载的理解,可能也不太全面,就简单点,其实就是数据就加载一次,可以不用在viewDidload里面就行加载,因为在viewDidload中加载可能会数据加载多次,而且有的时候你没有用到数据,它也已经给你加载出来了,这样会比较耗费内存和时间。懒加载的有点其实就是让控件和对象在最需要加载的时候加载。这样可以节省内存空间,毕竟我们能让手机速度越快越号是吧。所谓懒加载其实就是推迟他的getter方法的执行。下面添出两段关于懒加载的代码。总结:不需将对象的实例化写到viewDidLoad,可以简化代码,增强代码的可读性,对象的实例化在getter方法中,降低耦合性,对系统的内存占用率会减小,懒加载用到的时候才去加载
-(NSMutableArray *)dataArr{ if(!_dataArr) { _dataArr=[[NSMutableArray alloc]init]; return _dataArr; } return _dataArr;}//此处就是然这个数组来存储数据,我重写了它的get方法,当数组没有初始化的时候先初始化,在每次用到的时候会去加载它的数据,因为我每次用的都是它的[dataArr indexPath.row]然后我是给这个数组是有赋给他数据的,然后在每次用到的时候就会进行返回这个数组。另外一个懒加载是从plist来获取数据
- (NSArray *)statusFrames//没有给这个数组赋值所以重写get方法{ if (_statusFrames == nil) { NSString *fullPath = [[NSBundle mainBundle] pathForResource:@"statuses" ofType:@"plist"]; NSLog(@"%@",fullPath); // NSString *file = [[NSBundle mainBundle] pathForResource:name ofType:nil];这样的代码,来产生 file 的完全路径。 /* 那么它是什么东西呢:先看 NSBundle 类,直接继承NSObject类。 这个类的对象,代表了 app 中代码和资源的文件在文件系统里所在的位置,通俗的说,就是定位了程序使用的资源(代码,图形,音乐等数据)在文件系统里的位置,并可以动态的加载、or卸载掉可执行代码。 我们的程序是一个bundle. 在Finder中,一个应用程序看上去和其他文件没有什么区别. 但是实际上它是一个包含了nib文件,编译代码,以及其他资源的目录. 我们把这个目录叫做程序的main bundle,在 xcode 里,使用应用程序、框架、or 插件的时候,xcode 会生成对应的资源的目录包。 类方法 + (NSBundle *)mainBundle 返回一个 NSBundle类的对象,这个对象就是一个完全path,这个 path 保存的当前可执行的app路径,或者是 返回nil。app ,Build之后, 资源文件直接就复制到了根目录下,于是读取的方法,应该是这样: NSString *earth = [[NSBundle mainBundle] pathForResource:@"Brad Cox" ofType:@"png"]; 编译之后,mainBundle的资源都是放到RootFolder下,所以,可以直接访问,不要指定内部路径。通常来说,这个 mainbundle 就是 当前的可执行app 的在根目录下的绝对路径, 也就是: finder根目录开始的路径+app 的name+.app 后缀。而资源就直接访问,都在 app 的包里。比如; /Users/dashuai/Library/Application Support/iPhone Simulator/5.1/Applications/3B8EC78A-5EEE-4C2F-B0CB-4C3F02B996D2/tomcat.app/drink.png */ //加载数组 NSArray *dictArray = [NSArray arrayWithContentsOfFile:fullPath]; NSMutableArray *models = [NSMutableArray arrayWithCapacity:dictArray.count]; //将dictArray里面的所有字典转成模型对象,放到新的数组中 for (NSDictionary *dict in dictArray){ // 创建模型 NJWeibo *weibo = [NJWeibo weiboWithDict:dict];//直接从字典初始化 // 根据模型数据创建frame模型 NJWeiboFrame *wbF = [[NJWeiboFrame alloc] init]; wbF.weibo = weibo; [models addObject:wbF]; } self.statusFrames = [models copy]; } return _statusFrames;}
阅读全文
0 0
- iOS 关于懒加载
- ios-关于懒加载
- 关于iOS中的懒加载
- 关于iOS xib加载实践
- 关于在IOS开发中数据懒加载相关
- iOS 关于webview 加载路径乱码
- ios懒加载
- iOS 懒加载
- iOS懒加载
- IOS-懒加载
- ios 懒加载
- iOS 初始化 懒加载
- iOS懒加载问题
- iOS懒加载
- iOS懒加载
- IOS懒加载介绍
- iOS 懒加载模式
- iOS 懒加载
- 单机锁机制在多tomcat实例上有坑
- css背景
- malloc、calloc、realloc的区别
- No python interpreter configured for the project
- #6029. 「雅礼集训 2017 Day1」市场--线段树区间更新
- ios-关于懒加载
- 初学者的漫步拾忆SurfaceView
- git初学
- aliyun阿里云Maven仓库地址——加速你的maven构建
- 关于The absolute uri: http://java.sun.com/jstl/core_rt cannot be resolved in either web.xml or the jar
- opencv人脸识别(c++)
- Zookeeper安装
- APUE第二章 Unix标准及实现
- bzoj 1064 假面舞会 图论??+dfs