你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS單例模式(Singleton)

iOS單例模式(Singleton)

編輯:IOS開發綜合

單例模式的意思就是只有一個實例。單例模式確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例。這個類稱為單例類。

1.單例模式的要點:

  顯然單例模式的要點有三個;一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。

2.單例模式的優點:

  1.實例控制:Singleton 會阻止其他對象實例化其自己的 Singleton 對象的副本,從而確保所有對象都訪問唯一實例。   2.靈活性:因為類控制了實例化過程,所以類可以更加靈活修改實例化過程 iOS中的單例模式   在objective-c中要實現一個單例類,至少需要做以下四個步驟:
  1、為單例對象實現一個靜態實例,並初始化,然後設置成nil,
  2、實現一個實例構造方法檢查上面聲明的靜態實例是否為nil,如果是則新建並返回一個本類的實例,
  3、重寫allocWithZone方法,用來保證其他人直接使用alloc和init試圖獲得一個新實力的時候不產生一個新實例,
  4、適當實現allocWitheZone,copyWithZone,release和autorelease。 下面以SurveyRunTimeData為例子: static SurveyRunTimeData *sharedObj = nil; //第一步:靜態實例,並初始化。
@implementation SurveyRunTimeData
+ (SurveyRunTimeData*) sharedInstance //第二步:實例構造檢查靜態實例是否為nil
{
@synchronized (self)
{
if (sharedObj == nil)
{
[[self alloc] init];
}
}
return sharedObj;
}

+ (id) allocWithZone:(NSZone *)zone //第三步:重寫allocWithZone方法
{
@synchronized (self) {
if (sharedObj == nil) {
sharedObj = [super allocWithZone:zone];
return sharedObj;
}
}
return nil;
}

- (id) copyWithZone:(NSZone *)zone //第四步
{
return self;
}

- (id) retain
{
return self;
}

- (unsigned) retainCount
{
return UINT_MAX;
}

- (oneway void) release
{

}

- (id) autorelease
{
return self;
}
- (id)init
{
@synchronized(self) {
[super init];//往往放一些要初始化的變量.
return self;
}
}

@end
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved