iOS是以Controller为核心的。
如果一个界面里面的内容很多,势必会造成在Controller里面需要产生的视图、模型、交互变多变复杂。如果每个功能独立那还好,实际上大部分功能都是互相影响的。Controller里面代理一大堆。
请问各位有经验的应该怎么处理这种问题?有什么通用的解决方法吗?
你还没懂啊,Delegate的意思就是可以代理到任何地方去,一般来说放在一个Controller是为了逻辑方便,真的太多了,你就Delegate到其他地方去就好了,或者设计一个基类,或者用类组合都可以
ios是mvc模式为基础的,楼主可以查查mvvm模式。是mvc的一个改进,应该会有些思路
用block代替delegate方便多了
可以这样想: 设计这么复杂的界面本身就是问题, 工程师都觉得复杂的界面, 用户用起来通常也不会好用. 可以反馈给产品重新设计.
1楼 @tinyfool 比如我可以使用category来处理不同的功能模块和代理,但是在这些代理里我还可能产生其他界面,也有可能需要修改其他功能模块可能产生的界面,并与其进行交互,那又是如何处理的?
3楼 @xcode123 block只是看起来简洁,但实际上要处理的东西还是那么多的。
4楼 @windgo 但,产品不会因为你的代码问题而修改设计,这是不争的事实。
感谢大家的热心回答。我可以举个例子,比如Microsoft在iOS的三个APP,单个界面囊括的东西很多,请问应该如何设计这种代码的结构,有没有类似的代码、文献等可以拜读参考?
7楼 @coltfoal 可以反馈嘛. 很多东西, 你不说, 别人也不知道. 另外开发的工期总是你决定的. 揉在一起的太复杂的东西, 开发时间会比较长. 另一方面说, 复杂问题的解决, 就是分解. 想办法把界面分成几块(1~7块), 如果某部分还是复杂, 接着分解. 把一个长列表一样的东西, 搞成n叉树一样的结构, 问题就简单了.
9楼 @windgo 但是n个叉之间还有可能相互影响呢?
10楼 @coltfoal 两个 viewcontroller 也会互相影响啊,你可以思考下为什么一个 app 有几十个 viewcontroller 也不会有你说的很多东西揉在了一起的感觉。然后你就明白你的东西该怎么设计了,本质上是一回事
10楼 @coltfoal 尽量让依赖是单向的, 就是a模块调用b, 但是b模块不去调用a. 如果b模块调用a模块, 就用委托. 这样各个模块间的关系就不会变成一张网, 而是一棵树, 或者有层次结构的网.