IOS设计模式之单例设计模式
2015-08-10 13:44
573 查看
单例模式是一种非常常见的设计模式,我们经常用的UIApplication就是一种典型的单例模式,单例理解起来叶很简单,就不是不管如何访问始终只有一个实例化对象,定义全局共享的变量,如果对象是空则初始化一个对象,如果对象已经存在则使用已经实例化的对象。单例设计模式的作用是使得这个类的一个对象成为系统中的唯一实例,它可以省去很多不必要的初始资源的操作,提升了系统性能。
由于在项目中单例模式户经常用到,所以可以将其写成宏放头文件里,这样就可以两行代码搞定单例,附上demo下载地址
在ARC环境下:
而如果是在非ARC的环境下,则还要重写内存管理的那几个方法:
由于在项目中单例模式户经常用到,所以可以将其写成宏放头文件里,这样就可以两行代码搞定单例,附上demo下载地址
在ARC环境下:
// // SingletonTool.m // Singleton // // Created by JYH on 15/8/10. // Copyright (c) 2015年 JYH. All rights reserved. // #import "SingletonTool.h" @implementation SingletonTool static id _instance; -(instancetype)init { if (self = [super init]) { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ //初始化 }); } return self; } +(instancetype)allocWithZone:(struct _NSZone *)zone { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [super allocWithZone:zone]; }); return _instance; } +(instancetype)sharedSingleton { static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ _instance = [[self alloc]init]; }); return _instance; } + (id)copyWithZone:(struct _NSZone *)zone { return _instance; } @end
而如果是在非ARC的环境下,则还要重写内存管理的那几个方法:
- (oneway void)release { } - (id)autorelease { return _instance; } - (id)retain { return _instance; } - (NSUInteger)retainCount { return 1; }
相关文章推荐
- iOS 多线程
- iOS7之后的各种bar和布局
- iOS开发核心语言Objetive C —— 编译器指令构造方法及类工厂
- Transform – iOS视图几何变换
- iOS:KVO的概述与使用
- iOS GCD 学习笔记(一)
- iOS游戏IAP数据服务器验证
- iOS手势
- 主动退出iOS程序
- 电脑装完win8.1后无法进入BIOS
- iOS Xcode工程目录的 folder 和 group的区别(蓝色和黄色文件夹的区别)
- IOS开发之多线程详解
- IOS获取各种文件目录路径的方法
- iOS 9 适配系列教程
- iOS二级Table的简单实现
- ios 判断空字符串
- ios:点击tablecell中的一个按钮,确定cell所在的行
- iOS 验证手机号
- ios百度地图的使用(普通定位、反地理编码)
- IOS 获取所有图片工具类