【封装xib补充 Objective-C语言】

一、那么首先,咱们就从这个结果来分析

九宫格案例

1.就不给大家一步一步分析了,直接分析我们这里怎么想的,

首先,我们看到这样的一个界面,我们想,这些应用数据是不是来源于一个plist文件吧,

所以说,我们首先要,第一步,要懒加载,把这个plist文件中的数据,加载起来,

那么,因为,我们打开这个plist文件,这个plist文件中的每一条数据,就是一个字典,

我们要用模型来保存数据,所以说,首先是不是要根据字典,去创建一个模型,

那么,所以说,我们首先,就先创建这么一个模型,TestApp,

这个模型中有多少个属性,取决于你当前这个字典中有多少个键值对,

这个字典中是不是有两个键值对吧,一个是name,一个是icon,

都是字符串类型,所以说,这个模型当中,就建两个属性,

然后呢,建模型的时候,为了方便后面的使用,为了保证封装,所以说,这个模型当中,要创建两个方法,

一个是对象方法:initWithDict,

一个是类方法:appWithDict,

这两个方法的实现,大家看怎么实现的,

在这个initWithDict里面,首先,调一下父类的init方法,是不是先把对象从父类中继承下来的那些成员,先初始化一下吧,初始化完毕以后,接下来,再把这个对象扩展的新的这两个属性,用字典中这两个键值对的值,是不是来初始化,

初始化完毕以后,return self,返回当前对象,

然后,在这个类方法中,直接调这个类的alloc initWithDict,这样的话,这个模型,是不是就写好了,

这里要提醒大家注意的就是:这个模型中的这两个方法,在封装的时候,返回值要使用什么,instancetype,

这个instancetype,表示什么含义,还记得吗,

它在哪个类中,就表示当前这个类型的指针,

它在TestApp这个类中,就表示TestApp类型的指针,

就表示TestApp *,就表示这个指针,

当它在子类里面,就表示子类的指针,

也就是说,instancetype,在哪个类里面,就表示哪个类型的指针,

instancetype和id的区别:

1)id这个类型,可以作为方法的返回值、可以作为方法的参数、可以用id设置一个属性、也可以用id设置一个局部变量,

它就好比是一个NSObject *,是一个万能指针,

但是,我们这个instancetype不一样,instancetype,只能作为方法的返回值,instancetype这个关键字,只能作为方法的返回值,

其他地方用它,一定报错

2.第二步,我们现在说的是最终版,我们现在思考这个问题,怎么思考,一开始,看到这个数据是plist数据,

1)所以首先就是,要加载,要加载就是懒加载,

2)加载的时候,发现里面有字典,就要根据字典建立模型,因为等会儿我们用的,一定是模型吧,所以说,先把模型建好,刚才咱们说的就是建模型,

3)模型建好以后,接下来,就开始编写懒加载的代码,

懒加载的代码,怎么来写,就在我们控制器里面,控制器里面,首先

1> 在控制器里面,我们可以设置一个NSArray数组,为什么这里设了个NSArray,不是NSDictionary,因为整体来看,这个plist文件,是一个什么类型,NSArray类型吧,

所以我们这里要用NSArray类型来作为它的属性类型,

然后,懒加载代码怎么写,就是重写这个属性的getter方法,

在这个属性的getter方法里面,判断,如果是nil的话,是不是做我们的懒加载,

懒加载的步骤就是:

1>> 首先,把那个字典数组读取进来,

2>> 然后,循环这个数组中的每一个字典,

3>> 每一个字典,对应的创建一个模型,

4>> 然后呢,把字典对象传进去,

5>> 在这个模型内部,根据这个字典,创建模型,并且给模型的属性赋值,

6>> 创建好模型以后,把这个模型加到arrayModels这个可变数组当中,

7>> 循环完以后,把这个arrayModels可变数组,赋值给_apps这个属性,

8>> 执行完这个if语句以后,我们这个_apps数组中,就有数据了,并且,这个apps数组中每一个元素,就是一个模型,

好,

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清风清晨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值