首页 > 移动平台 > 详细

IOS开发笔记——单例模式

时间:2015-02-11 18:35:47      阅读:262      评论:0      收藏:0      [点我收藏+]
由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开发笔记——单例模式

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!