详解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
相关文章:
如何制作网站标识牌,动态网站如何制作(教程)?
如何快速使用云服务器搭建个人网站?
邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?
微课制作网站有哪些,微课网怎么进?
网站微信制作软件,如何制作微信链接?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?
赚钱网站制作软件,建一个网站怎样才能赚钱?是如何盈利的?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
如何在局域网内绑定自建网站域名?
制作充值网站的软件,做人力招聘为什么要自己交端口钱?
整蛊网站制作软件,手机不停的收到各种网站的验证码短信,是手机病毒还是人为恶搞?有这种手机病毒吗?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
天河区网站制作公司,广州天河区如何办理身份证?需要什么资料有预约的网站吗?
如何获取PHP WAP自助建站系统源码?
如何快速搭建高效WAP手机网站?
如何用手机制作网站和网页,手机移动端的网站能制作成中英双语的吗?
高端智能建站公司优选:品牌定制与SEO优化一站式服务
如何选择香港主机高效搭建外贸独立站?
清除minerd进程的简单方法
如何在万网ECS上快速搭建专属网站?
宝盒自助建站智能生成技巧:SEO优化与关键词设置指南
如何快速上传建站程序避免常见错误?
建站主机选哪种环境更利于SEO优化?
如何通过商城免费建站系统源码自定义网站主题?
,柠檬视频怎样兑换vip?
如何打造高效商业网站?建站目的决定转化率
c# 服务器GC和工作站GC的区别和设置
香港网站服务器数量如何影响SEO优化效果?
网站制作和推广的区别,想自己建立一个网站做推广,有什么快捷方法马上做好一个网站?
小型网站建站如何选择虚拟主机?
如何选择网络建站服务器?高效建站必看指南
宝塔Windows建站如何避免显示默认IIS页面?
如何通过宝塔面板实现本地网站访问?
香港服务器WordPress建站指南:SEO优化与高效部署策略
建站之星安装模板失败:服务器环境不兼容?
全景视频制作网站有哪些,全景图怎么做成网页?
如何配置支付宝与微信支付功能?
建站之星如何一键生成手机站?
建站之星导航配置指南:自助建站与SEO优化全解析
建站上传速度慢?如何优化加速网站加载效率?
如何在阿里云虚拟主机上快速搭建个人网站?
如何自定义建站之星网站的导航菜单样式?
制作营销网站公司,淘特是干什么用的?
建站之星如何配置系统实现高效建站?
*服务器网站为何频现安全漏洞?
合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?
建站之星代理平台如何选择最佳方案?
制作网站的软件免费下载,免费制作app哪个平台好?
*请认真填写需求信息,我们会在24小时内与您取得联系。