懒加载(延迟加载)之后,在使用数据过程中容易出现的bug
在UI中,使用懒加载,也就是延迟加载来加载数据的时候,总是会面临几个问题?
如:1. >为什么先创建NSArray属性?
2. >为什么重写NSArray的get方法?
3.>为什么要判断是否为空?
4.>为什么下方代码"//1"这里不用NSString stringWithFormat: 而"//2"这里要使用?
5.>同时"//2"这里为什么使用的是%ld 来作为占位符?
这些问题不搞懂,懒加载就很难通透, 代码如下:
1 #import "ViewController.h"
2
3 @interfaceViewController ()4 //先创建一个属性 (因为需要加载由字典组成的这个数组(也就是plist文件),所以需要先定义数组属性来接收和表示,)
5 @property (nonatomic, strong) NSArray *pictures;6 @end
7
8 @implementationViewController9
10 //.重写pictures属性的get方法, 在该属性的get方法中读取images.plist文件中的数据, 并将数据设置给pictures属性11 //这种加载数据的方式就叫做"懒加载"
12 - (NSArray *)pictures {13 if (_pictures ==nil) {14 //读取plist文件并加载数据15 //1. 获取images.plist文件的完整的路径
16 NSString *path = [[NSBundle mainBundle] pathForResource:@"images.plist"ofType:nil];17 //2. 根据plist文件的路径, 加载plist文件,再赋值给数组
18 _pictures =[NSArray arrayWithContentsOfFile:path];19 }20 return_pictures;21 }22 @end
23
24 //封装一个修改界面控件数据的方法
25 - (void)loadData {26 //2. 取出当前self.pictures中的对应的数据
27 NSDictionary *dict =self.pictures[self.index];28
29 //3. 把数据设置到界面中对应的控件上
30 self.lblTitle.text = dict[@"desc"]; // 1
31 self.imgViewIcon.image = [UIImage imageNamed:dict[@"icon"]];32 self.lblIndex.text = [NSString stringWithFormat:@"%d / %ld", self.index + 1, self.pictures.count]; //233
34
35 //设置"上一张"按钮 和 "下一张" 按钮的状态
36 self.btnPrevious.enabled = (self.index <= 0) ?NO : YES;37 self.btnNext.enabled = (self.index >= self.pictures.count - 1) ?NO : YES;38 }
原因及bug解析:
#if __LP64__ || (TARGET_OS_EMBEDDED && !TARGET_OS_IPHONE) || TARGET_OS_WIN32 || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
可以看出,NSUInteger就是一个别名,而且是两种情况,
那就是如果你的设备是32位的,那么这个NSUInteger表示的就是给unsigned long取的一个别名,
那就是如果你的设备是64位的,那么这个NSUInteger表示的就是给 long取的一个别名,
转载于:https://www.cnblogs.com/anRanTimes/p/5035881.html
懒加载(延迟加载)之后,在使用数据过程中容易出现的bug相关推荐
- 解决hibernate中的懒加载(延迟加载)问题
解决hibernate中的懒加载(延迟加载)问题 我们在开发的时候经常会遇到延迟加载问题,在实体映射时,多对一和多对多中,多的一样的属性默认是lazy="true"(即,默认是延迟 ...
- 图片懒加载、ajax异步调用数据、lazyload插件的使用
关于这个效果还是很简单的,样式部分我就不多说了,我就简单的写了一下布局, 这是css样式 我们先说一下实现的原理. 我们都知道在于图片的引入,我们都是用src来引入图片地址.从而实现图片的显示.那我们 ...
- 如何使用echo.js实现图片的懒加载(整理)
如何使用echo.js实现图片的懒加载(整理) 一.总结 一句话总结:a.在img标签中添加data-echo属性加载真实图片:<img class="loading" sr ...
- WEB前端 实现图片懒加载 echo.js
echo.js是一个轻小的图片懒加载js插件,在使用过程中很多朋友可能是直接自定义一张占位图片,可能会造成图片的变形等.其实这并不是最佳的解决方案.下面给大家介绍另一种方法,简单的控制下css,实现l ...
- LayUi 树形组件tree 实现懒加载模式,展开父节点时异步加载子节点数据
LayUi框架中树形组件tree官方还在持续完善中,目前最新版本为v2.5.5 官方树形组件目前还不支持懒加载方式,我自己修改了下最新源码tree.js,简单粗暴的方式支持懒加载模式.(Ps:最新更新 ...
- mysql 懒加载数据_jpa如何懒加载大字段,懒加载之后又如何获取懒加载字段
前言:对于大字段,我们在查询列表的时候不需要查询,但是修改的时候有需要展示大字段内容,怎么办 问1.jpa如何懒加载大字段?即查询列表的时候不查询出来 问2.懒加载之后又如何获取懒加载字段.比如,在后 ...
- 图片预加载与图片懒加载
图片预加载与图片懒加载 图片预加载 图片预加载主要是针对非icon类图片. 加载快,有良好的用户体验. 提前加载图片,当用户需要查看时可直接从本地缓存中渲染.可能因为图片很大,浏览器显示出它会用很长的 ...
- JavaScript中的懒加载——概念,作用,原理,实现步骤,以及3种原生js实现方式
1.什么是懒加载? 懒加载也就是延迟加载. 当访问一个页面的时候,先把img元素或是其他元素的背景图片路径替换成一张大小为1*1px图片的路径(这样就只需请求一次,俗称占位图), 只有当图片出现在浏览 ...
- Androidx ViewPager+Fragment 懒加载
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/113545036 本文出自[赵彦军的博客] 目录 前言 懒加载(预加载) 传统模式 ...
最新文章
- Datawhale厦门大学分享记录!
- android获取指针空间大小_腾讯笔试题:浅谈计算机中cpu位数和指针
- BCI2000对win10的支持
- python学习笔记(二十八)日志模块
- 一本让我多花2倍时间读的书
- c++代码整洁之道pdf_别再问如何用python提取PDF内容了
- 特斯拉全球超级充电站已超过25000座 国内超过870座
- 数据挖掘与python实践心得体会_数据挖掘心得体会
- RH850F1L 移植freeRTOS
- SLAM大牛实验室汇总(转载)
- 计算机主板巨头,主板主要厂商
- 计算机怎么显示正确,电脑显示器怎么正确设置
- 星球矿石盲盒流量主小程序
- php odbc informix,Informix CLI 与 ODBC
- Word中插入表格与柱状图饼状图技术经验分享
- 流利阅读 2019.1.26 The maturing of the smartphone industry should be celebrated, not lamented
- 因为1024图片 AppIcon 图标包含了透明度导致app上传ios 代码报错
- SAP QM检验批常见问题及解决办法
- Linux攻关之基础模块十 特殊权限
- webview加载gif图片