为什么单例对象是通过类方法创建的?

时间:2015-06-22 07:29:35

标签: objective-c memory-management singleton

我们总是通过Class方法创建单例对象。如果我创建该方法实例(使用 - 而不是+)并通过nil对象或仅通过对象调用该方法会发生什么?

1 个答案:

答案 0 :(得分:2)

概念上,instance方法未附加到类的任何特定实例。

这意味着从设计的角度来看,在现有对象上调用它是没有意义的。这就像要求+(int) sum:(int)a with:(int)b应该是一个实例方法,当它不需要知道关于对象的任何内容时。

此外,通常不应该从客户端访问单例类构造函数,如果您需要实例化一个以在其上调用-instance,这将失去目的。

最后,单例应该是对象的唯一可能实例,如果你需要一个实例化一个,那么你就处于死锁状态:你需要一个实例来创建一个实例但你不能拥有更多的实例比一个实例。

关于在nil对象上调用它,如果我没记错,从发送到nil的邮件返回的指针也总是nil