2016-07-20 47 views
4

为什么苹果没有他们的类纯单,例如,即使UIApplication类,您可以访问到的UIApplication单,如:可可单和共享的情况下

UIApplication *sharedApplication = [UIApplication sharedApplication]; 

没有什么能阻止你明确实例一个UIApplication实例,如:

UIApplication *newApplication = [[UIApplication alloc] init]; 

但是,结果是运行时异常。该例外清楚地表明,在任何时候只有一个UIApplication类的实例可以存在。

那么,为什么不通过在默认初始值返回相同的实例有纯单身?

我问这个问题有清晰,对我的项目创造单时,要遵循哪种方式更好。所有的

回答

1

首先,你是对的:什么苹果称之为单身既不在被广泛接受的定义,真正的单身也不是Apple's definition

[...]而用一个单独的类,可以存在每个进程的类的只有一个实例

然而,实施一个共享实例是很容易在夫特:

class SomeManager { 
    static let sharedInstance = SomeManager() 
} 

在Objective-C中,两种方法(单例和共享实例)都是可实现的,但共享实例更容易再次实现。

另一方面,使用共享实例模式没有缺点。你应该遵循它。

BTW:你不共享的情况下,所有病例得到一个异常。有些课程可让您分配第二个实例,类似于非法。

0

这是一个标准的苹果提出,我们的开发人员遵循,使应用程序。

简而言之,苹果公司并没有将他们的课程设置为Singletons作为设计选择。而且,再次涉及到针对UIApplication的运行时异常,每个应用程序只有一个UIApplication实例。

你只是不能创建自己的UIApplication,只要你喜欢。它打破了规则。

但是,我们作为开发人员可以随时在我们的应用程序中随时创建和使用单例。而且,苹果也不同意我们这样做。

重要的是你用什么样的设计选择来开发应用程序!苹果有他们的方式,我们有我们的方式!而且,只要工作,大家都很开心!

至于正确的方式,只是不存在。你一直沿着这条路走下去。

由于开发人员的经验以及在特定时间寻求最佳选择的原因,Apple选择了这种模式。而且,直到今天一直很好。假设有一天它会中断,那么Apple会很乐意改变他们的标准。

而且,关于您最后一个关于要遵循哪种标准或模式的问题,您可以按照您感觉最舒适的方式进行操作。这是您的设计选择!

亲切的问候,
网速慢阿迪卡里

+0

苹果并没有做任何随意,我只是想知道这是什么特别的方式背后的原因(利益),这就是为什么我问这个问题。我和eveybody知道事情运作良好,所以不需要为此写回答。 亲切的问候, Ajay –

+0

那么,我会寻找一个答案,你会接受先生!为我们两人学习的时间! – Ariel

相关问题