Cocoa Singleton惯例

Mik*_*ard 3 cocoa singleton

可可充满了单身人士.Cocoa API使用时是否存在逻辑/常规差异

NSSingletonObject *so = [NSSingletonObject defaultSingleton];
Run Code Online (Sandbox Code Playgroud)

NSSingletonObject *so = [NSSingletonObject sharedSingleton];
Run Code Online (Sandbox Code Playgroud)

这不是一件大事,但我真的不明白为什么有时会使用另一个.

jkp*_*jkp 7

我认为如果它是你正在使用的真正的单例(例如NSApplication),那么-[JKFoo sharedFoo]遵循约定.另一方面,如果类提供对默认实例的访问,但您仍然可以创建其他实例(例如NSNotificationQueueNSFileManager),则使用-[JKBar defaultBar]约定.

旁注:如果你实现了一些自己的Cocoa单例,那么你可能需要看一下有用的OpenSource头文件 :)

[编辑:Mike Ash在他的博客中指出了使用GCD的更好的单例解决方案]