Singletons
The singleton design pattern is used in several key classes in Cocoa Touch. Singletons allow a class to return the same object instance anytime another object requests it. This is very handy when you never want more than one object of that type.
The NSNotificationCenter you just read about is an example. All notifications need to be routed through a centralized service for them to be effective. Just as importantly, objects need to be able to locate that central instance, and that's accomplished with the notification center's class method:
+ (id)defaultCenter;
Every object that sends a +defaultCenter message gets back the same object. That lets all objects add and remove observers in the same place.
Many times a class will use a singleton as a way to model that the thing only occurs once, either physically or virtually. You have only one application, set of settings, and hardware accelerometer, for example.
Unfortunately, there's no one standard for naming singletons. Older classes, such as those in the foundation, use the default prefix on the method name. Newer classes tend to use shared as a prefix. The most common singleton classes are:
NSFileManager (defaultManager)
NSUserDefaults (standardUserDefaults)
UIApplication (sharedApplication)
UIAccelerometer (sharedAccelerometer)
NSNotificationCenter (defaultCenter)
Singletons as Globals
Many experienced developers recommend against using singletons. If you've ever programmed using global variables, you'll realize that singletons are ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access