1.开发中的 AOP 思路
-
代理模式
① 对于 UITableViewCell 中的跳转点击事件, 而该 cell 不知道它所在的UIViewController 是谁, 就需要向上一级传递这个点击事件, 直到找到当前控制器, 从对应的 UINavigationController 跳转到到一个指定的控制器.
② 传递事件的过程可能比较复杂, 设置一个又一个的代理, 于是新的自我管理的模式就应运而生了. -
Self-Managed:
为了让每个 cell 各自处理自己的事情, 可以让每个子控件都拥有同一个公共管理类, 通过这个公共管理类来调用各个层级的控件. - 为了降低耦合, 快速地添加或删除某个功能的代码, 可以使用协议. 如春哥的直播间功能, 直接定义一个遵循某些协议的对象, 就能在直播间的主控制器中的特定方法中, 调用这些对象实现的协议方法, 间接地帮助新功能快速调用主控制器的方法, 很类似 collectionview 的代理方法.
2.消息分发机制
- 在一个父视图中, 添加多个子视图, 而且这些子视图都需要被父视图调用执行某些相似的操作, 可以把子视图装进一个数组里, 在父视图里遍历有没有实现对应的方法, 按照实现情况来调用.
3. 分离
在 RoomRootView.m
中实现所有的子视图的懒加载创建, 在 RoomRootLayout
中实现- (void)createLayout:(PTVRoomRootView*)view;
方法来对 RoomRootView.m
中的视图添加到父视图 RoomRootView 中, 并布局.
或在 RoomRootView.m
一级视图中实现所有的二级视图子视图的懒加载创建, 在 RoomRootLayout
中实现- (void)createLayout:(PTVRoomRootView*)view;
方法来对 RoomRootView.m
中的视图添加到父视图 RoomRootView 中, 并布局, 同时实现- (void)makePortraitLiveVideoLayout:(PTVRoomPortraitView*)view;
方法, 来添加PTVRoomPortraitView
的子视图及其布局.
4. 复用
在创建新页面的时候, 最好考虑复用的情况, 即配置了 schema 跳转的情况, 通过几个参数, 就能正常展示.