MVC中的其他类

时间:2013-05-03 12:52:14

标签: ios model-view-controller

使用MVC模式开发典型的iOS应用程序。如果我有额外的类包含纯逻辑,比如

  • 花式算法(AES)
  • 简单的钥匙串访问(内置C函数的包装器)
  • 与套接字或HTTP请求的连接
  • 好吧也许是图书馆的任何东西,与UI
  • 无关

这些类既不是控制器,也不是模型,也不是视图。他们提供功能服务。它们如何适应这个MVC的东西?

4 个答案:

答案 0 :(得分:1)

这些库/类是控制器的一部分,因为它使用它们来实现它的功能。

例如,控制器连接到Web服务器并显示到视图,这是控制器作业的一部分,或者在将某些数据发送到模型之前使用某些库加密某些数据。

答案 1 :(得分:1)

由于所有这些类都在执行操作,因此可以将它们视为Helper方法或实用程序方法。无论你怎么称呼他们,他们仍然是控制者,正如Antonio MG指出的那样。

例如,我的班级通常有以下控制器:

  • CoreDataUtility(从Core Data获取数据)
  • APIClient(通过HTTP创建对Web的请求)。

我将它们标记为Controllers,并将它们放在我的Xcode项目的Controllers文件夹中。

答案 2 :(得分:1)

如果他们是辅助课程,那么正如其他人所指出的那样,他们是MVC中C的一部分。

除非他们当然是模特的一部分。如果他们为您的应用程序的数据或业务需求建模,那么它们就是MVC中M的一部分。

无论如何,在您的控制器中,您只需使用import语句并根据需要使用这些类。您将实例化类,调用实例方法,调用类方法,将实例存储为属性等。

很多时候,你会发现自己使用类似于[NSUserDefaults standardUserDefaults]的单例模式。

答案 3 :(得分:1)

三个类别(模型,视图,控制器)中的任何一个都可以自由使用其他可能不完全适合其中一个角色的类。

例如,模型对象可能使用AES加密和解密存储的数据,并且可能会将加密密钥存储在钥匙串中。控制器可能使用钥匙串来限制对应用程序某些部分的访问。视图可能使用实现FFT的类来帮助它对数据进行分区以供显示。

MVC是设计应用程序的范例,但它不是允许类的完整列表。 Cocoa和Cocoa Touch本身充满了可供模型,视图和/或控制器类使用的类,但这些类本身并不适合这些角色。考虑所有容器类(NSArray,NSSet,NSDictionary等),值类(NSNumber,NSString等),表示操作系统不同部分的类(NSFileManager,NSUserDefaults和其他我不会尝试的事情)像UITouch,NSEvent,NSJSONSerialization等分类。我没有计算,但我猜想不适合三个MVC角色之一的Cocoa和Cocoa Touch类的数量远远超过那些。 p>