Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC架构中的iOS单例类_Ios_Xcode_Design Patterns_Model View Controller_Singleton - Fatal编程技术网

MVC架构中的iOS单例类

MVC架构中的iOS单例类,ios,xcode,design-patterns,model-view-controller,singleton,Ios,Xcode,Design Patterns,Model View Controller,Singleton,大多数iOS应用程序都基于MVC设计模式,我们多年来一直在应用程序中使用单例类。我知道SuntLon本身是一种设计模式,很多人认为它是反模式,也是关于单体的好坏东西。p> 但是如果你将MVC视为你的应用程序开发的一个整体架构,我想了解一个单体在哪里被分类。它是模型、视图还是控制器?如果是,为什么?如果它不属于这三者中的任何一个,那么它是什么 这似乎是一个愚蠢的问题,但它一直困扰着我,因为我在一家知名公司的面试中被问到这个问题 MVC是一种架构模式,而Singleton是一种设计模式。这两件事是不

大多数iOS应用程序都基于MVC设计模式,我们多年来一直在应用程序中使用单例类。我知道SuntLon本身是一种设计模式,很多人认为它是反模式,也是关于单体的好坏东西。p> <>但是如果你将MVC视为你的应用程序开发的一个整体架构,我想了解一个单体在哪里被分类。它是模型、视图还是控制器?如果是,为什么?如果它不属于这三者中的任何一个,那么它是什么


这似乎是一个愚蠢的问题,但它一直困扰着我,因为我在一家知名公司的面试中被问到这个问题

MVC是一种架构模式,而Singleton是一种设计模式。这两件事是不相关的,因此在MVC中Singleton不是“任何东西”

撇开任何关于使用单例的政治讨论不谈,理论上,您可以决定将任何模型、视图或控制器类创建为单例

正如gnasher所指出的,在iossdk中,ViewControllers是由运行时创建和销毁的,这意味着在这种情况下,无论理论如何,它们都是单例的,这是不合逻辑的

更可能的情况是,您希望模型可用于多个视图。您可能会决定使该模型成为一个可以通过依赖项注入框架或构造函数注入访问的单例。在这种情况下,您的类既是一个模型类,也是一个单例类。它们不是相互排斥的


我想知道你的面试官是否就是这个意思——在iOS应用程序中,你最想在哪里使用Singleton?在这种情况下,正确的答案应该在模型中。

MVC是一种架构模式,而Singleton是一种设计模式。这两件事是不相关的,因此在MVC中Singleton不是“任何东西”

撇开任何关于使用单例的政治讨论不谈,理论上,您可以决定将任何模型、视图或控制器类创建为单例

正如gnasher所指出的,在iossdk中,ViewControllers是由运行时创建和销毁的,这意味着在这种情况下,无论理论如何,它们都是单例的,这是不合逻辑的

更可能的情况是,您希望模型可用于多个视图。您可能会决定使该模型成为一个可以通过依赖项注入框架或构造函数注入访问的单例。在这种情况下,您的类既是一个模型类,也是一个单例类。它们不是相互排斥的


我想知道你的面试官是否就是这个意思——在iOS应用程序中,你最想在哪里使用Singleton?在这种情况下,正确答案应该在模型中。

视图控制器通常在需要时创建,在不再需要时自动解除分配;这种视图控制器不可能是单一的。如果您的视图控制器是单体的,我会质疑您的决定。另一方面,对于一个模型类来说,成为一个单身汉一点也不稀奇。我说的是“理论上”,而这篇文章问的是MVC,而不是ios开发框架有什么可能。问题不是关于最佳实践,而是关于单身人士是MVC的哪一部分,在面试中问别人这不是一个合乎逻辑的问题。如果问题是“你最想在ios应用程序中的哪一个地方使用Singleton”,那么答案就会改变。。。我将进行编辑以澄清。视图控制器通常在需要时创建,在不再需要时自动取消分配;这种视图控制器不可能是单一的。如果您的视图控制器是单体的,我会质疑您的决定。另一方面,对于一个模型类来说,成为一个单身汉一点也不稀奇。我说的是“理论上”,而这篇文章问的是MVC,而不是ios开发框架有什么可能。问题不是关于最佳实践,而是关于单身人士是MVC的哪一部分,在面试中问别人这不是一个合乎逻辑的问题。如果问题是“你最想在ios应用程序中的哪一个地方使用Singleton”,那么答案就会改变。。。我将编辑以澄清。