码迷,mamicode.com
首页 > 移动开发 > 详细

IOS开发笔记——单例模式

时间:2015-02-11 18:37:36      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:ios

由java转入IOS开发了,自学配合实际项目记录一些项目中用到的技巧,APP比较小,涉及到的知识点比较简单,大牛就不用看了,小兵大家一起讨论。
单例模式就是确保在程序运行过程中,一个类只有一个实例,公司的APP的账号管理是通过单例实现的。先上代码:

@interface JVAccountManager : NSObject
+ (JVAccountManager *)sharedAccount;
@end

@implementation JVAccountManager
+ (JVAccountManager *)sharedAccount
{
static JVAccountManager *sharedAccountManager;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedAccountManager = [[JVAccountManager alloc] init];
});
return sharedAccountManager;
}
@end

这是我们公司的实现方法,网上可以查到其他实现方法,但是要重写一些方法保证实例的唯一性,比如allocWithZone,copyWithZone,这里不赘述,我贴出来的是代码最简洁的实现方法;
比较陌生的是dispatch_once这个方法,这个方法其实就是为了保证实例的唯一性。这个方法是display_once,GCD(Grand Central Dispatch)中提供的方法,根据IOS编程这本书里面的解释,是一种低级的对NSOperation和NSOperationQueue的模拟,使用Objective-C block。其实我不是很清楚这一块,以后的文章中再分析吧。需要明白的是dispach_once函数中的代码块只会被执行一次,而且还是线程安全的。
void dispatch_once( dispatch_once_t *predicate, dispatch_block_t block);其中第一个参数predicate,该参数是检查后面第二个参数所代表的代码块是否被调用的谓词,第二个参数则是在整个应用程序中只会被调用一次的代码块;

在这个程序中获取这个唯一实例的方法:
JVAccountManager *sharedAccountManager = [JVAccountManager sharedAccount];

IOS开发笔记——单例模式

标签:ios

原文地址:http://blog.csdn.net/zhuliushijie/article/details/43736325

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!