iOS 单类

1 。 宏写法

// .h

#define singleton_interface(class) + (instancetype)shared##class;

// .m

#define singleton_implementation(class) \

static class *_instance; \

\

+ (id)allocWithZone:(struct _NSZone *)zone \

{ \

static dispatch_once_t onceToken; \

dispatch_once(&onceToken, ^{ \

_instance = [super allocWithZone:zone]; \

}); \

\

return _instance; \

} \

\

+ (instancetype)shared##class \

{ \

if (_instance == nil) { \

_instance = [[class alloc] init]; \

} \

\

return _instance; \

}


2.自写

+ (instancetype)sharedInstance

{

static dispatch_once_t __singletonToken;

static id __singleton__;

dispatch_once( &__singletonToken, ^{ __singleton__ = [[self alloc] init]; } );

return__singleton__;

}

+ (YYVersionAgent *)sharedInstance

{

static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

sharedInstance = [[YYVersionAgent alloc] init];

});

return sharedInstance;

}

你可能感兴趣的:(iOS 单类)