日常技术小结(1):0615

(一) manager写法总结

按照数据的流向编号
日常技术小结(1):0615_第1张图片

1.继承自网络访问工具类

2.分页属性

【依据具体情况添加此项】
总页数,当前页码索引,总条数

3.数据存储容器(一般是结构体数组)

关于结构体,是一个独立文件,根据后台返回的字段列表进行编码,用json 进行初始化
日常技术小结(1):0615_第2张图片

4.回调通知

日常技术小结(1):0615_第3张图片
通知控制器数据获取完毕,成功或者失败,一般采用闭包
闭包书写比较麻烦,可以预先用typealias实现声明

5.网络访问方法(依据具体的场景增减函数)

调用网络工具类方法,具体看是否需要分页,数据成功取回以后,对数据存储对象进行元素填充,并通过闭包进行回调

(二) 控制器之间引用

在开发中经常会用到一个控制器去引用另外一个控制器的view,如下图,有个UIViewController作为一个大容器,在每次滑动的时候需要加载一个新的UITableViewController。需要注意的点,首先是将UITableViewController的tableView添加UIViewController的view。
日常技术小结(1):0615_第4张图片
后来发现数据不显示,只有一个空的tableView,说明UITableViewController已经有了tableView,后来代码进行了修改
分析:代码中的vc属于一个临时变量,在方法执行完以后就销毁,但是由于addSubview方法对tableView持有,所以并未释放掉,但vc已经销毁,数据不存在
解决方案:其实问题找到以后,解决方法就好说了,无非就是对vc进行强引用,有两种解决方法
创建一个成员变量对vc 进行强引用,适用于单个控制
对于当前场景,多个控制器,可以采用addChildController的方式

(三)关于UITableViewController 的tableView 与 UIViewController 的view

UITableViewController有一个主要的UIView,用于记录控制器内子控件,或者所有子控件的容器,但是在打印UITableViewControllerview 和 tableView 发现二者内存地址一致,即在UITableViewController中tableView即相当于UITableViewControllerview的作用,在添加子控件addSubview的时候,既可以用view也可以用tableView

你可能感兴趣的:(日常技术小结(1):0615)