iOS 单例对象创建
2016-06-20 13:33
267 查看
// Created by 刘俊杰 on 16/6/20.
// Copyright © 2016年
刘俊杰. All rights reserved.
//
#import "SingleManger.h"
static SingleManger * single;
@implementation SingleManger
//第一种写法,不用GCD,比较简单
+(SingleManger *)shareSingle
{
if (!single) {
single = [[self
allocWithZone:NULL]
init];
}
return single;
}
}
//还有一种大家比较喜欢用的写法
+(SingleManger *)shareSingle
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
single = [[SingleManger
alloc]init];
});
return single;
}
/**
* dispatch_once(&onceToken, ^{
});
这个函数是专为单例而生,保证整个应用程序生命周期中某段代码只被执行一次block对象
*/
//还有一种比较有争议的写法
+(SingleManger *)shareSingle
{
static SingleManger * single;
if (single ==
nil) {
single = [[super
allocWithZone:NULL]
init];
}
return single;
}
+(id) allocWithZone:(struct
_NSZone *)zone
{
return [SingleManger
shareSingle] ;
}
-(id) copyWithZone:(struct
_NSZone *)zone
{
return [SingleManger
shareSingle] ;
}
//这种方法是防止我们通过不同的途径得到不同的对象(alloc copy),但不被大家所推荐,具体原因大家可以去看官方文档(主要是我自己也只是了解个大概,汗颜...........)
// Copyright © 2016年
刘俊杰. All rights reserved.
//
#import "SingleManger.h"
static SingleManger * single;
@implementation SingleManger
//第一种写法,不用GCD,比较简单
+(SingleManger *)shareSingle
{
if (!single) {
single = [[self
allocWithZone:NULL]
init];
}
return single;
}
}
//还有一种大家比较喜欢用的写法
+(SingleManger *)shareSingle
{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
single = [[SingleManger
alloc]init];
});
return single;
}
/**
* dispatch_once(&onceToken, ^{
});
这个函数是专为单例而生,保证整个应用程序生命周期中某段代码只被执行一次block对象
*/
//还有一种比较有争议的写法
+(SingleManger *)shareSingle
{
static SingleManger * single;
if (single ==
nil) {
single = [[super
allocWithZone:NULL]
init];
}
return single;
}
+(id) allocWithZone:(struct
_NSZone *)zone
{
return [SingleManger
shareSingle] ;
}
-(id) copyWithZone:(struct
_NSZone *)zone
{
return [SingleManger
shareSingle] ;
}
//这种方法是防止我们通过不同的途径得到不同的对象(alloc copy),但不被大家所推荐,具体原因大家可以去看官方文档(主要是我自己也只是了解个大概,汗颜...........)
相关文章推荐
- ios开发所需图片尺寸汇总
- iOS 应用版本号设置规则
- ios多线程使用精讲
- The dependency `AFNetworking` is not used in any concrete target.
- iOS 开发中的各种证书简要说明
- iOS雷达图 iOS RadarChart实现
- iOS雷达图 iOS RadarChart实现
- iOS开发 通过 ahpla 实现渐变色效果
- ios10下载地址
- iOS字符串转UTF8
- alcatraz插件管理
- 为iOS建立Travis CI(史上最全版)
- iOS 判断iphone ipad 系统版本
- fir.im Weekly - 从 iOS 10 SDK 新特性说起
- iOS 工程师应该掌握哪些技能?
- ViewController的生命周期分析和使用
- iOS崩溃日志符号化(symbolicatecrash )
- fir.im Weekly - 从 iOS 10 SDK 新特性说起
- iOS使用NSMutableAttributedString 实现富文本(不同颜色字体、下划线等)
- iOS开发多线程篇 04 —线程间的通信