詳解IOS 單例的兩種方式
詳解IOS 單例的兩種方式
方法一:
#pragma mark -
#pragma mark sharedSingleton methods
//單例函數(shù)
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;
}
//單例函數(shù)結(jié)束
方法二:
.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
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
舉例講解iOS中延遲加載和上拉刷新/下拉加載的實(shí)現(xiàn)
這篇文章主要介紹了舉例講解iOS中延遲加載和上拉刷新/下拉加載的實(shí)現(xiàn),語(yǔ)言依然為傳統(tǒng)的Objective-C,需要的朋友可以參考下2015-09-09
IOS9.0 LaunchScreen.StroyBoard自定義啟動(dòng)圖片詳解
這篇文章主要介紹了IOS9.0 LaunchScreen.StroyBoard自定義啟動(dòng)圖片詳解的相關(guān)資料,需要的朋友可以參考下2017-02-02
iOS開(kāi)發(fā)仿電商類APP首頁(yè)實(shí)例
本篇文章主要介紹了iOS開(kāi)發(fā)仿電商類APP首頁(yè)實(shí)例,主要是利用ui布局,具有一定的參考價(jià)值,有需要的可以了解一下。2016-11-11
swift3.0網(wǎng)絡(luò)圖片緩存原理簡(jiǎn)析
總結(jié)iOS開(kāi)發(fā)中的斷點(diǎn)續(xù)傳與實(shí)踐
iOS實(shí)現(xiàn)視頻下載并自動(dòng)保存到相冊(cè)功能
iOS應(yīng)用開(kāi)發(fā)中使用NSLocale類實(shí)現(xiàn)對(duì)象信息的本地化

