您好,登錄后才能下訂單哦!
這篇文章主要介紹了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中如何實現單例”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。