I have to admit that the static variables we have in the C world (C/Cpp/ObjC) are pretty cool (Note, it’s not thread safe. This is just an example):
- (void)someMethod {
static id variable = nil;
if (!variable) {
// initialize variable
}
}
What about our new favorite language, namely Swift? There is a way to achieve such awesomeness, with a little bit more code, however its more structured:
class var sharedManager: AppManager {
struct Constants {
static let instance = AppManager()
}
return Constants.instance
}
In the snippet above, I’m creating a singleton accessor, with a lazy initializer, as a class property. We can now even skip the brackets when accessing the shared instance:
// Somewhere in your code
AppManager.sharedManager.doSomething()