-模仿淘宝首页
/**
- 陈振,大三,iOS初学者。
- 希望能在iOS开发的道路上向着牛逼的目标一路狂奔。
- 第一次实习,很幸运,是一家小的创业公司,iOS端是只有老大一个人写,很自然他负责带我。哈哈,觉得自己幸运到爆。
*/
简单的对淘宝首页进行模仿,也没有进行适配,在iPhone8上跑的。
界面底部图片是模仿微信朋友圈效果,图片动态布局。上拉可删除一张图,下拉恢复初始状态。点击轮播图进入大连的天气详情界面,用的是一个收费的API,只能免费500次访问
代码写的很烂,也算是从现在开始记录自己成长的轨迹。
项目总结及自己的收获:
1.轮播图:
之前没做过相关的实现,在网上参考了很多代码的实现思路。然后自己封装了一个,感觉以后会比较常用。在接口文件中,声明了两个类方法,传入方向(direction)参数,
可生成不同方向滚动的轮播图。图片是网上的链接,用的'YYWebImage'设置的图片。
2.封装的思想:
之前写代码就没这种想法,想实现什么界面就在Controller里乱写一通。现在感觉到了这种思想的好处,减少了Controller里的代码量,结构层次更清晰,而且耦合低,方
便复用。当然现在对这种思想的理解也比较浅显,希望以后有更多的理解。
3.懒加载
这个概念之前只是单纯的从书上了解过,并不知道怎么应用。但是组长给我实际展示一遍之后,我算是彻底理解了。之前在类中定义一个(model或者视图)属性后,都会在视图加载或者初始化
方法中创建该属性,为其分配内存空间。这种做法造成了内存空间的浪费,有些属性或许在用户使用的过程中根本没必要生成。懒加载,也就是重写属性的Getter,在判断没
有创建过该属性后进行创建。有一点需要注意,在Getter方法中不要使用 self.属性名 的访问方式,因为这样会造成对这个方法递归调用,最终App挂掉。要使用“_属性名”
的方式。因为这样是直接访问的实例变量。
4.各个类之间分工明确
“自己的事情自己做”。这是组长在给我检查我写的代码是给我指出的问题。因为我在控制器中创建好Cell之后,为Cell的各个控件通过大量“cell.label”, "cell.imageView"
等方式一个个赋值。组长告诉我,只需在Cell类中,写一个Model属性,重写model的setter方法,在setter让它自己为自己赋值。这样,只需在控制器中传给cell相应的model
即可。
我犯的第二的错误是,在控制器中生成Cell后,又在控制器中生成Cell的子视图。Cell的视图应该由它自己来生成。
5.头文件的使用
对于经常使用的屏幕尺寸,字符串之类的数据,放在一个专门的头文件中。使用#define。
6.了解了Cell的重用池,及重用机制。
7.App无非都是在做:网络请求->数据处理->数据展示->事件响应->动效展示。
Controller负责网络请求,事件响应。
View负责数据展示,动效展示
Model负责数据处理
8.控制器中分段注释方法
大概就这些吧。接下来的日子希望能学到更多。