iOS Developer

ios创建单例

2017-04-17  本文已影响121人  木头Lee

最近公司项目其中的一个控制器需要做成单例,以保证收到推送或应用内消息时弹出的是同一个界面,看了下相关资料和视频,现把ios实现单例的几种方式总结一下:

dispatch

这种方式个人认为是最简单、最方便、最推荐的方式,且能够保证线程安全。缺点就是只能在ARC环境使用,非ARC方式不能使用


#import <UIKit/UIKit.h>

@interface LGSingleton : NSObject

//******************************** 将类方法声明宏,传入类名 ********************************
#define LGSingletonH(ClassName) +(instancetype) share##ClassName;

@end

@implementation LGSingleton

//********************************* 将方法的实现声明为宏 **********************************
#define LGSingletonM(ClassName) static id _instance;\
\
+(instancetype)allocWithZone:(struct _NSZone *)zone\
{\
    static dispatch_once_t onceToken;\
    dispatch_once(&onceToken, ^{\
        _instance = [super allocWithZone:zone];\
    });\
\
    return _instance;\
}\
\
\
+(instancetype)share##ClassName\
{\
    static dispatch_once_t onceToken;\
    dispatch_once(&onceToken, ^{\
        _instance = [[self alloc] init];\
    });\
\
    return _instance;\
}\
\
\
-(id)copyWithZone:(NSZone *)zone\
{\
    return _instance;\
}
@end

使用方法:





coming soon ...

上一篇下一篇

猜你喜欢

热点阅读