虚位以待(AD)
虚位以待(AD)
首页 > 软件编程 > IOS编程/Objective-C > 详解IOS 单例的两种方式

详解IOS 单例的两种方式
类别:IOS编程/Objective-C   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了详解IOS 单例的两种方式的相关资料,希望通过本文大家能够理解掌握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 单例的实现方法