全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解IOS 单例的两种方式

详解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小时内与您取得联系。