详解IOS 单例的两种方式

方法一:
#pragma mark -
#pragma mark sharedSingleton methods
//单例函数
static RtDataModel *sharedSingletonManager = nil;
+ (RtDataModel *)sharedManager
{
@synchronized(self) {
if (sharedSingletonManager == nil) {
sharedSingletonManager = [[self alloc] init];
}
}
return sharedSingletonManager;
}
+ (id)allocWithZone:(NSZone *)zone
{
@synchronized(self) {
if (sharedSingletonManager == nil) {
sharedSingletonManager = [super allocWithZone:zone];
return sharedSingletonManager; // assignment and return on first allocation
}
}
return nil; //on subsequent allocation attempts return nil
}
- (id)copyWithZone:(NSZone *)zone
{
return sharedSingletonManager;
}
- (id)retain
{
return sharedSingletonManager;
}
- (NSUInteger)retainCount
{
return UINT_MAX; //denotes an object that cannot be released
}
- (oneway void)release
{
//do nothing
}
- (id)autorelease
{
return sharedSingletonManager;
}
//单例函数结束
方法二:
.h文件
#import <Foundation/Foundation.h>
@interface RtTestDataModel : NSObject
{
NSMutableArray * _buyDataTArray;
NSMutableArray * _sellDataTArray;
}
+ (RtTestDataModel *)sharedManager;
- (void)addOptionBuyDataArrayModel: (NSMutableArray *)DataArray;
- (NSMutableArray *)getOptionBuyDataArrayModel;
@end
.m文件
#import "RtTestDataModel.h"
@implementation RtTestDataModel
+ (RtTestDataModel *)sharedManager
{
static RtTestDataModel *sharedManager = nil;
static dispatch_once_t predicate;
dispatch_once(&predicate,^{
sharedManager = [[RtTestDataModel alloc]init];
});
return sharedManager;
}
- (void)dealloc
{
[_buyDataTArray removeAllObjects];
[_buyDataTArray release];
[super dealloc];
}
- (id)init
{
self = [super init];
if (self != nil) {
_buyDataTArray = [[NSMutableArray alloc] initWithCapacity:8];
}
return self;
}
- (void)addOptionBuyDataArrayModel: (NSMutableArray *)DataArray{
if (DataArray != nil) {
[_buyDataTArray removeAllObjects];
[_buyDataTArray addObjectsFromArray:DataArray];
}
}
- (NSMutableArray *)getOptionBuyDataArrayModel{
return _buyDataTArray;
}
@end
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# IOS
# 单例
# 单例模式
# 单例的实现方法
# iOS单例的创建与销毁示例
# IOS Swift3 四种单例模式详解及实例
# 使用设计模式中的Singleton单例模式来开发iOS应用程序
# iOS App开发中使用设计模式中的单例模式的实例解析
# IOS 中两种单例模式的写法实例详解
# 谈一谈iOS单例模式
# iOS开发教程之单例使用问题详析
# 如有
# 两种
# 希望能
# 谢谢大家
# 疑问请
# allocWithZone
# zone
# NSZone
# id
# alloc
# init
# return
# super
# copyWithZone
# retain
# NSUInteger
# attempts
# assignment
# allocation
# subsequent
相关文章:
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
如何配置FTP站点权限与安全设置?
如何基于PHP生成高效IDC网络公司建站源码?
如何通过宝塔面板实现本地网站访问?
网站app免费制作软件,能免费看各大网站视频的手机app?
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
广州商城建站系统开发成本与周期如何控制?
相册网站制作软件,图片上的网址怎么复制?
高防服务器如何保障网站安全无虞?
如何选择高效响应式自助建站源码系统?
大连网站制作公司哪家好一点,大连买房网站哪个好?
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
ui设计制作网站有哪些,手机UI设计网址吗?
c++怎么实现高并发下的无锁队列_c++ std::atomic原子变量与CAS操作【详解】
如何选择适配移动端的WAP自助建站平台?
昆明高端网站制作公司,昆明公租房申请网上登录入口?
英语简历制作免费网站推荐,如何将简历翻译成英文?
如何在企业微信快速生成手机电脑官网?
如何通过虚拟主机快速搭建个人网站?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
建站之星代理如何获取技术支持?
如何快速搭建高效WAP手机网站?
制作网页的网站有哪些,电脑上怎么做网页?
网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何生成腾讯云建站专用兑换码?
如何正确选择百度移动适配建站域名?
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
东莞专业网站制作公司有哪些,东莞招聘网站哪个好?
如何选择适合PHP云建站的开源框架?
网站制作价目表怎么做,珍爱网婚介费用多少?
如何零成本快速生成个人自助网站?
沈阳制作网站公司排名,沈阳装饰协会官方网站?
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何高效利用亚马逊云主机搭建企业网站?
网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?
早安海报制作网站推荐大全,企业早安海报怎么每天更换?
网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
如何制作算命网站,怎么注册算命网站?
完全自定义免费建站平台:主题模板在线生成一站式服务
网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?
制作企业网站建设方案,怎样建设一个公司网站?
如何选择高效便捷的WAP商城建站系统?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
广州美橙建站如何快速搭建多端合一网站?
如何通过VPS建站实现广告与增值服务盈利?
建站主机如何选?性能与价格怎样平衡?
网站制作难吗安全吗,做一个网站需要多久时间?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
*请认真填写需求信息,我们会在24小时内与您取得联系。