iOS單例建立

在objective-c中要實現一個單例類,至少須要作如下四個步驟:objective-c

  一、爲單例對象實現一個靜態實例,並初始化,而後設置成nil,spa

  二、實現一個實例構造方法檢查上面聲明的靜態實例是否爲nil,若是是則新建並返回一個本類的實例,code

  三、重寫allocWithZone方法,用來保證其餘人直接使用alloc和init試圖得到一個新實力的時候不產生一個新實例,對象

  四、適當實現allocWitheZone,copyWithZone,release和autorelease。it

下面是一個簡單的例子:io

static XYLocationManager *sharedInstance = nil;
+ (XYLocationManager *)sharedInstance{
    static dispatch_once_t predicate;
    dispatch_once(&predicate, ^{
        if (sharedInstance == nil) {
            sharedInstance = [[self alloc] init];
        }
    });
   
    return sharedInstance;
}
+ (id)allocWithZone:(NSZone *)zone {
   
    @synchronized(self) {
       
        if (sharedInstance == nil) {
            sharedInstance = [super allocWithZone:zone];
        }
        return sharedInstance;
    }
    return nil;
}
- (id)copyWithZone:(NSZone *)zone {
   
     return self;
}
- (id)init {
   
    @synchronized(self) {
        self = [super init];
       
        return self;
    }
}
相關文章
相關標籤/搜索