单例模式

单例模式的作用

可以保证在程序运行过程,一个类只有一个实例,而且该实例易于供外界访问

从而方便地控制了实例个数,并节约系统资源


单例模式的使用场合

在整个应用程序中,共享一份资源(这份资源只需要创建初始化1次)

#define interfaceSingle(name)+ (instancetype)share##name

#if __has_feature(objc_arc)

//如果是ARC

#define implementationSingle(name)+ (instancetype)share##name \

{ \

return [[self alloc] init]; \

} \

static id _instance; \

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

{ \

static dispatch_once_t onceToken; \

dispatch_once(&onceToken, ^{ \

_instance = [super allocWithZone:zone]; \

}); \

return _instance; \

} \

- (id)copyWithZone:(NSZone *)zone \

{ \

return _instance; \

} \

- (id)mutableCopyWithZone:(NSZone *)zone \

{ \

return _instance; \

}

#else

//如果不是ARC

#define implementationSingle(name)+ (instancetype)share##name \

{ \

return [[self alloc] init]; \

} \

static id _instance; \

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

{ \

static dispatch_once_t onceToken; \

dispatch_once(&onceToken, ^{ \

_instance = [super allocWithZone:zone]; \

}); \

return _instance; \

} \

- (id)copyWithZone:(NSZone *)zone \

{ \

return _instance; \

} \

- (id)mutableCopyWithZone:(NSZone *)zone \

{ \

return _instance; \

}\

- (oneway void)release \

{} \

- (instancetype)retain \

{ \

return _instance; \

} \

- (NSUInteger)retainCount \

{ \

return MAXFLOAT; \

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 线程间的通信 从子线程回到主线程 延时执行 iOS常见的延时执行有两种方式p 调用NSObject的方法 p 使用...
    一抹月光3053阅读 4,106评论 1 12
  • 一. ARC环境下的单例模式 单例模式的基本概念单例, 顾名思义, 即在整个程序中, 某一个类只有唯一一个实例, ...
    面糊阅读 4,086评论 0 50
  • 文丨雪花如糖 读《今生今世》:胡兰成与他的八个女人(上) 五、桃叶婀娜 1944年8月,在一个阳光温暖、安静的日子...
    雪花如糖阅读 10,980评论 34 51
  • 参考http://www.cnblogs.com/syxchina/archive/2011/03/02/2197...
    鱼仔_1625阅读 1,027评论 0 0
  • 这本书讲述了一个宇宙的重要秘密,这个秘密就是吸引力法则。不管我们身在何处,我们的生活和工作都是依循这个力量和法则。...
    王豪骏阅读 1,405评论 0 0

友情链接更多精彩内容