单例
2016-03-14 14:04
253 查看
#import "ServiceManager.h"
static ServiceManager *defaultManager;
@implementation ServiceManager
+(ServiceManager *)defaultManager{
if(!defaultManager)
defaultManager=[[self allocWithZone:NULL] init];
return defaultManager;
}
@end
使用GCD的写法
#import "ServiceManager.h"
@implementation ServiceManager
+(ServiceManager *)sharedManager{
static dispatch_once_t predicate;
static ServiceManager * sharedManager;
dispatch_once(&predicate, ^{
sharedManager=[[ServiceManager alloc] init];
});
return sharedManager;
}
@end
dispatch_once这个函数, 它可以保证整个应用程序生命周期中某段代码只被执行一次!
static ServiceManager *defaultManager;
@implementation ServiceManager
+(ServiceManager *)defaultManager{
if(!defaultManager)
defaultManager=[[self allocWithZone:NULL] init];
return defaultManager;
}
@end
使用GCD的写法
#import "ServiceManager.h"
@implementation ServiceManager
+(ServiceManager *)sharedManager{
static dispatch_once_t predicate;
static ServiceManager * sharedManager;
dispatch_once(&predicate, ^{
sharedManager=[[ServiceManager alloc] init];
});
return sharedManager;
}
@end
dispatch_once这个函数, 它可以保证整个应用程序生命周期中某段代码只被执行一次!
相关文章推荐
- Spring mvc工作原理
- android 音量调整
- MPICH安装方法及简单测试
- 二叉树 广度优先遍历
- 移动平台质量跟踪系统对比-crashlytics、网易云捕、友盟、bugly
- 【html-01】h5教程学习笔记
- MySQL主从复制、半同步复制和主主复制概述
- 【JavaScript】(8)——实例:图片切换效果
- c#连接sqlserver数据库并显示
- 这应该是目前最系统的 Android 界面性能调优资料了
- 导航条navigationBar上中间标题title 文字的样式
- iOS开发系列--触摸事件、手势识别、摇晃事件、耳机线控
- web.xml文件加载顺序
- 网易云捕--最全面的Android应用程序崩溃收集SDK
- Jenkins节点配置
- Unity网格合并_材质合并
- 第二周进度条
- Android控件第6类——杂项控件
- CSDN用户信息又泄露了吗?
- androidstudio导入library项目开源库