最近在阅读大神Casa Taloyum
的博客,发现他不仅文章写得好,还尽心尽力的回复每一个人的评论,每篇文章评价都上百条,一条条看下来,受益匪浅,不仅有初学者的问题,也有开发遇到瓶颈的探讨,作者都一一解答,我就摘抄了一部分,让大家分享。
1、什么时候添加和删除notification
?
答:
- 根据最小权力原则,我们倾向于优先放在展示周期去监听事件。
ViewController
的展示周期是小于ViewController
的生命周期的,所以一般如果能在展示周期完成的监听事件的需求,就不会放到生命周期中去做。除非展示周期搞不定的,才会把监听扩大到生命周期。
2、如果一个ViewController
有很多的业务,视图也比较复杂,该怎么拆分呢?我想把业务的处理和页面跳转抽取出来,放到一个category
里面,这样viewController
可以减少很多代码,但是这个category
貌似没有复用的价值。
另外,如果UITableView
里面有很多不一样的cell
,如何重构代码才能使cell
的逻辑简化呢?我尝试用工厂模式去解决,但是发现每个cell
需要的model
参数都差不多,无法通过model
去区分,而通过indexPath
去区分的话又不方便重用,只能是一个页面适用。
答:
-
一般是按照业务角色来拆分业务模块,这需要你对业务有很好的抽象能力。首先,用
Category
来做对象功能拆分这个思路是没错的,但是对于拆分ViewController
来说,拆分更加偏重的是对业务的抽象,然后设立角色,这样才能做到可复用,所以category
的思路在这种场景下是不适用的。category
只是把大对象变多个小对象而已,它适合拆分那种本身就已经抽象程度比较高、可复用性比较高的底层对象,而不适合用来拆分业务。 -
独立出
DataSource
成一个对象,DataSource
事实上就可以理解为一个factory
,然后DataSource
根据Controller
给的指示(通过设置DataSource
属性也好,通过方法穿参数也行)去生产当前需要的Cell
继续阅读iOS博客问答摘录