Skip to content

Instantly share code, notes, and snippets.

@AndroidT
Forked from lukeredpath/ExampleClass.m
Created December 18, 2015 08:38
Show Gist options
  • Save AndroidT/074132b27f16c895dbb6 to your computer and use it in GitHub Desktop.
Save AndroidT/074132b27f16c895dbb6 to your computer and use it in GitHub Desktop.
Macro for creating your "shared instance" using GCD
@implementation MySharedThing
+ (id)sharedInstance
{
DEFINE_SHARED_INSTANCE_USING_BLOCK(^{
return [[self alloc] init];
});
}
@end
#define DEFINE_SHARED_INSTANCE_USING_BLOCK(block) \
static dispatch_once_t pred = 0; \
__strong static id _sharedObject = nil; \
dispatch_once(&pred, ^{ \
_sharedObject = block(); \
}); \
return _sharedObject; \
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment