iOS 单例用法
单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类。
1.单例模式的要点:
显然单例模式的要点有三个;一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。
2.单例模式的优点:
1、为单例对象实现一个静态实例,并初始化,然后设置成nil,
2、实现一个实例构造方法检查上面声明的静态实例是否为nil,如果是则新建并返回一个本类的实例,
3、重写allocWithZone方法,用来保证其他人直接使用alloc和init试图获得一个新实力的时候不产生一个新实例,
4、适当实现allocWitheZone,copyWithZone,release和autorelease。
staticUility *uility = nil;//第一步,写一个静态的对象,并置为空
+(Uility *)sharedUility{
@synchronized(self){
if (uility == nil) { //第二步,,,判断为空,然后创建。
uility = [[Uility alloc] init];
}
}
return uility;
}
+ (id) allocWithZone:(NSZone *)zone //第三步:重写allocWithZone方法,防止其他人直接用alloc init方法创建一个新的实例
{
@synchronized (self) {
if (uility == nil) {
uility = [super allocWithZone:zone];
return uility;
}
}
returnnil;
}
- (id) copyWithZone:(NSZone *)zone //第四步 防止其他人直接用copy方法创建一个新的实例
{
returnself;
}
- (id) retain
{
returnself;
}
- (unsigned) retainCount
{
returnUINT_MAX;
}
- (oneway void) release
{
}
- (id) autorelease
{
returnself;
}
- (id)init
{
@synchronized(self) {
[superinit];//往往放一些要初始化的变量.
return self;
}
}
最新文章
- 10款免费而优秀的图表JS插件
- Oracle Form 特殊的默认值 $$variables$$
- Java 反射在实际开发中的应用
- Linux IPC实践(3) --具名FIFO
- 《java入门第一季》之面向对象(多态向下转型)
- .NET常用第三方库(包)总结(转)
- Delete from join 用法
- 导入的eclipse 中 maven项目,项目中已经加入lombok.jar包,但是不能编译成功
- 地图调起URI API(通过连接直接调用百度地图)
- MySQL查询实例
- linux 下常用部分命令
- alsa-lib、alsa-utils移植
- Hibernate 之单向多对一映射及其衍生问题
- shell脚本学习—正则表达式
- [转]nopCommerce 3.9 版本发行
- std::string::find() 和 std::string::npos
- ubuntu 14.04 中安装R和Rstudio
- delphi 天气预报
- 利用pandas进行数据分析之三:DataFrame与Series基本功能
- Android无线测试之—UiAutomator编译与运行测试代码