懒加载 字典转模型 自定义cell
1 懒加载:
1> 什么是懒加载?
懒加载又称为延时加载,即在系统调用的时候加载,如果系统不调用则不会加载.所谓的懒加载其实就是重写其 get 方法.
2> 特点:在使用懒加载的时候要先判断该方法是否已经存在,如果不存在则再进行实例化.
3> 优点:
- 不必将创建对象的方法都写在 viewDidLoad 里面,代码可读性更强.
- 每个控件的getter 方法分别负责各自的实例化处理,独立性强,耦合性低.
4> 使用步骤:
- 声明一个属性.该属性可以是私有属性也可以是在. h 文件中声明的属性.懒加载的对象是一个属性.
- 在.m 中的 viewDidLoad外面重写懒加载,即重写其 getter 方法
- 先判断 _对象 是否存在,如果不存在则,在 if 中实例化属性对象,并设置对象的属性,并添加其特有的方法
- 返回 _对象
2 字典转模型
1> 什么是字典转模型?
字典数据/数组(可以是 plist 文件中的数据也可以是网络后台的数据等)转化为模型对象/数组.
2> 注意
模型要提供可以传入字典参数的构造方法.(一个对象方法一个类方法)
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)xxxWithDict:(NSDictionary *)dict;
3> 提示:在模型中尽量的使用自读属性可以进一步降低代码的耦合性
4> 优点:
- 将字典中的数据封装到一个模型类中,有 MVC 框架思想的优点,可以降低耦合性
- 所有的字典转模型可以写在一处,便于管理,同时也可以降低代码的出错率
- 字典转模型后,直接把字典中的数据转移到模型的属性中,外界可以直接调用模型的属性来获取数据,从而可以提高代码的编码效率
- 由于模型是一个单独的类中进行的,外界不用关心类中的细节,只要使用就可以,更好的体现了面向对象的思想.
5> 使用步骤
- 在模型的.h 文件中声明所需要的所有属性
- 在模型的.h实例化两个方法
- (instancetype)initWithDict:(NSDictionary *)dict;
+ (instancetype)appInfoWithDict:(NSDictionary *)dict;
- 在模型的.m 文件中,通过实现两个方法获取数据
- (instancetype)initWithDict:(NSDictionary *)dict{
self = [super init];
if (self) {//给声明的属性赋值
self.name = dict[@"name"];
self.icon = dict[@"icon"];
}
return self;
}
+ (instancetype)appInfoWithDict:(NSDictionary *)dict{
return [[self alloc] initWithDict:dict];
}
- 声明要空控件的属性,并懒加载中直接实例化赋值
- 在 VC 的. m 文件中声明一个目标控件的属性
- 懒加载控件,并在懒加载的判断为空的时候,通过 bundle à path à 通过 path 路径把数据转到模型(数组)中 à 创建一个临时可变数组(用于盛放数据) à 遍历通过路径获取的数据 à 给临时数组赋值 à 将临时数组赋值给模型对象
3 自定义 cell
1> 什么是自定义 cell
自定义 cell 即 tableView,collectionView,scrollView中的 cell 使用的时候不能满足我们使用 cell 的需求,需要自己定义一个 cell.
2> 优点:
- 自定义 cell 是继承自系统的 cell, 因此它具有系统 cell 的所有的属性和方法
- 自定义 cell 可以在自定义的类中扩展属性和方法,供外界使用.
3> 使用方法
自定义 cell 的方法有三种
- 纯代码
1 在自定义 cell 类的.h 文件中声明要增加的属性和方法
2 在自定义cell 类的.m 文件中实现增加的方法.
该类的构造方法 initWithStyle:--- reuseIdentify 方法
调用父类的构造方法
判断 self是否存在
返回 self
3 在 VC 中的数据源方法中的第三个方法中将系统的 cell 换成自定义的 cell 的类即可拥有自定义 cell 扩展的属性和方法.
先创建一个 static 的重用标示符,然后通过重用标示符去重用池中寻找,假如通过重用标示符找不到 cell 则通过自定义的 cell 创建 cell, 最后返回 cell.
- Xib
实现步骤:
1 创建一个类 继承自 UITableViewCell/
UICollectionViewCell/UIScrollViewCell
2 创建一个和步骤一同名的 xib
3 将一个 cell拖到xib窗口中,并在属性检查器上
(1)修改Custom Class为 创建从类名
(2)设定其重用标识符(Identifier),该重用标示符要和 VC 中定义的重用标示符一样.
4 在 xib 中进行布局
5 将 xib 中的控件拖线到cell上
6 使用的时候,和纯代码使用类似,只是将创建 cell 的方法改用为 xib 的方法
- storyboard
该方法是最简单的一种方法,但缺点也很多,在开发中基本上用不到,思路就是在storyboard的 cell 中直接操作.
转载于:https://www.cnblogs.com/ansyxpf/p/5494240.html
懒加载 字典转模型 自定义cell相关推荐
- vue 图片拖动加载 类似于地图_前端性能优化之图片懒加载(附vue自定义指令)...
作者:lzg9527 链接:https://juejin.cn/post/6903774214780616718 在类电商类项目,往往存在大量的图片,如 banner 广告图,菜单导航图,美团等商家列 ...
- 图片懒加载及Vue自定义图片懒加载指令
文章目录 监听滚动的方式 IntersectionObserver方式 自定义图片懒加载vue指令1 自定义图片懒加载vue指令2 lazyLoadImage.js main.js中注册指令 组件中使 ...
- vue3 图片懒加载
vue3 图片懒加载 基本代码 封装为自定义指令 基本代码 <template><div><div style="height:2000px"> ...
- vue图片加载失败使用默认图片,el-image支持懒加载,自定义占位、加载失败等
<template><d2-container><h3>image加载失败使用默认图片</h3><img src=""alt= ...
- ionic3 html调用摄像头,ionic3懒加载中使用自定义组件component
问题: 由于使用了懒加载所以不能像之前一样直接引用component对象,在网上找了好多办法找了好多尝试终于知道怎么调用component了,记录一下使用自定义组件的详细过程 解决: 1. ionic ...
- 自定义指令实现图片懒加载
Vue自定义指令实现图片懒加载 其实实现懒加载的方式有很多了,现在也有很多插件(比如:vue-lazyload等),element-ui库中也有图片懒加载的方式,所以大家根据自己的喜欢选择就可以了 I ...
- el-select下拉加载(实现懒加载)自定义loadmore事件
el-select下拉加载(实现懒加载)自定义loadmore事件 使用场景:下拉框远程搜索数据量较大,导致dom渲染很慢,所以远程搜索要采用分页的形式,故自定义事件,实现滚动加载,具体如下: 1.自 ...
- Vue自定义指令及实现图片懒加载指令
一. 速识概念: 在我们使用 Vue 的过程中,遇到了很多方便我们操作的vue内置指令,以 v-xxx 表示.比如有 v-module,v-for,v-if,v-show 等等,每个指令都能实现一 ...
- 使用 el-table 实现树形数据懒加载、点击行展开、每次只展示一条数据(大类)以及自定义表格合计值
1. 使用 el-table 实现树形数据懒加载 实现必需条件: lazy :load="loadNode" :tree-props="{ children: 'chil ...
最新文章
- 光测力学-栅线投影/面结构光技术
- swift_000(Swift 的导读必看)
- html设置字体整体放大,请教怎么样可以只放大或缩小内容层里的字体呢?我不想让整页都放大缩小。请指教!谢谢!_html/css_WEB-ITnose...
- golang defer 关闭文件 报错file may have nil or other unexpected value as its corresponding error
- 2019~2020年终总结
- Spark累加器实现原理及基础编程
- [PAT乙级]1041 考试座位号
- 阿里媒体转码公共参数_Xuggler教程:转码和媒体修改
- Simple Addition expression【打表+二分】
- Java基础题笔记2
- ex28 布尔表达式练习
- 开源GIS(十三)——openlayers通过geoserver中WFS添加要素
- Oracle 列类型说明
- 架构师之路 — 架构师的职责
- GIMP( GNU IMAGE MANIPULATION PROGRAM)
- 推广网站的26种方法
- linux驱动面试题目汇总
- MATLAB中mat转换为xlsx表格数据
- Blocking Queue
- 无法挣脱的命运——《巴黎圣母院》读后感4000字
热门文章
- java自适应table_【进阶之路】包罗万象——JAVA中的锁
- php类退出魔术方法,php类中常用的魔术方法
- ssh服务器拒绝证书,使用SSH.NET以密钥文件连接到SFTP(权限被拒绝(publickey))...
- 实验报告C语言实现图的深度遍历,图的深度优先遍历的C语言实现.pdf
- 计算机二级ms office excel,计算机二级Msoffice考试excel答案.docx
- mysql err 1349_MySQL 视图 第1349号错误解决方法
- 五分钟没有操作自动退出_这又是什么骚操作??5只蚂蚁战略配售基金拟增设B类份额,自动赎回退出!!...
- Java数据库foreign,mysql中的外键foreign key 作者:Java_xb
- matlab 信号的原子产生,MATLAB随机产生原子结构代码
- 使用Python,OpenCV线程化方式提高视频FPS(每秒帧数)