你好,歡迎來到IOS教程網

 Ios教程網 >> IOS訊息 >> 關於IOS >> ios 單例 Singleton

ios 單例 Singleton

編輯:關於IOS

單例模式就是只有一個實例,確保一個類只有一個實例,並且自行實例化並向整個系統提供這個實例,一個單例類可以實現在不同的窗口之間傳遞數據。

在oc中要實現一個單例類,至少需要做以下四個步驟:

1、為單例對象實現一個靜態實例,並初始化,然後設置成nil,

2、實現一個實例構造方法檢查上面聲明的靜態實例是否為nil,如果是則新建並返回一個本類的實例,

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

4、適當實現allocWitheZone,copyWithZone,release和autorelease

+(instancetype)shareAccount;

static CZAccount *account = nil;

+(instancetype)shareAccount{
if (!account) {
account = [[self alloc] init];
}
return account;
}

+(instancetype)allocWithZone:(struct _NSZone *)zone{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
account = [super allocWithZone:zone];
});
return account;
}

+(instancetype)allocWithZone:(struct _NSZone *)zone{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
//MethodLog

warning 登錄賬號數據初始化在allocWithZone方法

account = [super allocWithZone:zone];
    //從沙盒取得登錄數據 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    account.access_token = [defaults objectForKey:@"access_token"];
    account.remind_in = [defaults objectForKey:@"remind_in"];
    account.expires_in = [defaults objectForKey:@"expires_in"];
    account.uid = [defaults objectForKey:@"uid"];
});
return account;
}
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved