您的位置:首页 > 移动开发 > IOS开发

iOS开发47-iOS 单例的学习和使用

2015-11-25 19:55 381 查看

iOS开发47-iOS 单例的学习和使用

单例是一种类,该类只能实例化一个对象。

Single.h

#import <Foundation/Foundation.h>

@interface Single : NSObject
@property(nonatomic,copy)NSString * aString;
+(instancetype)shareSingle;
@end


Single.m

#import "Single.h"
static Single *s =nil;
@implementation Single
+(instancetype)shareSingle{

//第一种写法
/*
if(s == nil)
{
s = [[Single alloc]init];
}
*/

//第二种写法(推荐使用,线程安全)
static dispatch_once_t onceToken;

dispatch_once(&onceToken, ^{

if(s == nil)
{
s = [[Single alloc]init];
}

});

return s;

}
@end


dispatch_once不仅意味着代码仅会被运行一次,而且还是线程安全的,这就意味着不需要使用诸如@synchronized之类的来防止使用多个线程或者队列时不同步的问题。

著作权声明:本文由http://my.csdn.net/Nathan1987_原创,欢迎转载分享。请尊重作者劳动,转载时保留该声明和作者博客链接,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: