3

我有一个 UIViewController,随着时间的推移,它添加了很多委托事件,这使得控制器类变得非常大。UIViewController 类包含相当多的视图管理方法,这些方法从事件委托方法中调用,以管理控制器正在管理的 UIView。

我现在正在向该类添加更多 UIActionSheet 委托事件。我的控制器类越来越大,我想我应该打破 UIActionSheet 委托事件并将它们放在单独的委托类中。然后,这个单独的委托类必须回调到视图控制器类中,以使视图控制器使用视图控制器中的视图管理方法相应地调整视图。(视图控制器访问视图所代表的单独模型对象)。

我可以看到采用这种突破方法的利弊。向控制器添加越来越多的委托事件感觉是错误的,但是为不同类别的事件创建单独的类,然后需要回调到控制器中,这似乎也引入了不必要的复杂性和混淆层。大型控制器类“简单明了”但感觉不对,而使用许多不同的委托类会更复杂和复杂,但会产生更小的类。

任何人都可以提供一些关于这个话题的智慧之言,或许可以为我指出一些关于这个问题的特定于 iOS 的阅读?

非常感谢。

4

2 回答 2

0

我对这个问题的处理方法是:

  1. 让它起作用
  2. 让它更锋利
  3. 回到 1。(如果您在某个领域有经验,或者 1 和 2 都在同一个回合)

因此,如果代码有效,应用程序看起来不错,但您发现某些类中有 100 个方法,因此请尝试不同的设计模式(如果您还没有)并使用这些切割器的想法将代码分离到不同的类、委托、封装它们,如果必要等

http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaDesignPatterns/CocoaDesignPatterns.html

以防万一链接到 Cocoa 设计模式建议,我不时研究Pro objective c design patterns for ios. 可能不是最好的书,但它基于 ios 上下文中的“四人帮”设计模式书。

希望这至少在某种程度上有所帮助,

干杯

于 2013-02-07T11:04:53.540 回答
0

最后,我创建了很多额外的类来处理特定的 UIActionSheet 实例。我创建了一个基类,然后为主控制器中的每个 UIActionSheet 要求对其进行子类化。

最终结果看起来很整洁,并且不会增加太多复杂性。

于 2013-02-11T18:53:31.760 回答