单例模式
2015-12-22 21:40
363 查看
单例模式在Cocoa中非常常见。按照习惯,你可以通过一个以
单例往往用于业务层对象,就如同前面所说的
单例往往会伴随着线程安全问题,可以在
建议通过GCD内置的dispatch_once方法、速度快,而且线程安全。
//
// ZQKSingleton.h
// FFFFFF
//
// Created by laouhn on 15/12/22.
// Copyright (c) 2015年 宇哥. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ZQKSingleton : NSObject
+ (ZQKSingleton *)sharedSingleton;
@end
//
// ZQKSingleton.m
// FFFFFF
//
// Created by laouhn on 15/12/22.
// Copyright (c) 2015年 宇哥. All rights reserved.
//
#import "ZQKSingleton.h"
@implementation ZQKSingleton
+ (ZQKSingleton *)sharedSingleton{
static ZQKSingleton *zqk = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
zqk = [ZQKSingleton new];
});
return zqk;
}
@end
shared开头的类方法识别它。
单例往往用于业务层对象,就如同前面所说的
CALayoutManager类一样。
单例往往会伴随着线程安全问题,可以在
+sharedSingleton中添加一个
@synchronize以达到线程安全的目的,但这样就会使用到同步对象,性能会产生问题。
建议通过GCD内置的dispatch_once方法、速度快,而且线程安全。
//
// ZQKSingleton.h
// FFFFFF
//
// Created by laouhn on 15/12/22.
// Copyright (c) 2015年 宇哥. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface ZQKSingleton : NSObject
+ (ZQKSingleton *)sharedSingleton;
@end
//
// ZQKSingleton.m
// FFFFFF
//
// Created by laouhn on 15/12/22.
// Copyright (c) 2015年 宇哥. All rights reserved.
//
#import "ZQKSingleton.h"
@implementation ZQKSingleton
+ (ZQKSingleton *)sharedSingleton{
static ZQKSingleton *zqk = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
zqk = [ZQKSingleton new];
});
return zqk;
}
@end
相关文章推荐
- centos 6.5 阿里云 源码安装php swoole详解
- 欢迎使用CSDN-markdown编辑器
- Perl6 -1.2 操作符
- Intelij idea15 在线激活码
- 类别(Categories)和扩展/匿名类别(extensions)及其延伸使用
- 清华大学研读间助手-清华小图Android
- Android 学习
- 首次远程安装 GlassFish 后以远程 Web 方式访问其后台管理系统出现错误的解决方法
- 森浦资讯(C++ 面试两道程序题)
- 终端命令 插件的安装
- JAVA面向对象之构造方法
- IOS7中sizeWithFont 方法过期了 怎么用别的方法代替
- Leetcode203: N-Queens
- 【c/c++】指针函数和函数指针
- 算法导论-16.1-4 活动教室选择问题
- 有关getchar的用法
- 程序10——逐层打印二叉树
- python descriptor
- android 应用内部获取本应用或者对应包名的应用的SHA1签名的办法
- mycncart之后台显示在线人数