在我的Objective-C应用程序中,一些视图控制器具有数十个IBOutlet和40多种方法。阅读代码变得非常困难。我试图通过在单独的控制器类中声明属性和方法来限制它们的数量。
是否有一些好的做法来限制一个类中的代码量,或者我必须接受它,因为我的类有很多任务要控制?
答案 0 :(得分:1)
我认为您最终获得了称为Massive View Controllers的东西。
请查看下面的链接。
https://talk.objc.io/collections/refactoring-large-view-controllers
有更多的方法可以缓解该问题。如果我说得对,您可能正在关注MVC。如果是这样,您应该考虑遵循MVP / MVVM / VIPER架构。
答案 1 :(得分:1)
通常在iOS应用程序编程中,视图控制器会变大,因为它执行应属于其他层的任务。这些层是:
举个简单的例子:如果您的业务逻辑是要计算两个整数的和,并且您的UI有两个文本框,那么C的任务就是将两个字符串转换为两个整数。在此示例中,视图控制器仅是一个管理器,其中包含对两个文本框的引用。它知道如何直接操作这些文本框,如何从这些文本框接收事件以及如何调用(实际)控制器。
总而言之,要解决您的问题,只需将视图控制器中的一些代码提取到上面的层中即可。
答案 2 :(得分:1)
显然,在MVC中,'C'ontroller要做的事情很多,例如处理视图的生命周期事件,处理IBActions中的视图回调以及类似的其他任务。如果我们正在处理来自'M'odel的数据,那么在Controller中也是如此。对于前将Date对象转换为String并显示为'V'iew或处理后显示一些计数。
不负责管理视图并处理数据的代码可以移到其他类。这种全新的设计模式称为MVVM-模型-视图-视图模型。 ViewModels将具有与数据处理相关的方法。我想这将有助于Viewcontrollers从处理这么多事情中减轻一些负担,并在代码上缩小一些。
如果您想对MVVM设计模式有更多的了解,请通过以下链接:
https://www.raywenderlich.com/34-design-patterns-by-tutorials-mvvm
希望这对您有所帮助。