温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

IOS中如何实现单例

发布时间:2021-07-09 09:48:02 来源:亿速云 阅读:148 作者:小新 栏目:移动开发

这篇文章主要介绍了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中如何实现单例”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ios
AI