IOS開發中單例模式使用詳解

2021-09-07 22:11:54 字數 1571 閱讀 5613

一、基本概念

單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例類的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項而且該例項易於外界訪問。 第

二、在ios中使用單例模式的情況

1.如果說建立乙個物件會耗費很多系統資源,那麼此時採用單例模式,因為只需要乙個例項,會節省alloc的時間

2.在ios開發中,如果很多模組都要使用同乙個變數,此時如果把該變數放入單例類,則所有訪問該變數的呼叫變得很容易,否則,只能通過乙個模組傳遞給另外乙個模組,這樣增加了風險和複雜度 第

三、建立單例模式的基本步驟

1.宣告乙個單例物件的靜態例項,並初始化為nil

2.宣告乙個類的工廠方法,生成乙個該類的例項,並且只會生成乙個

3.覆蓋allcowithzone方法,確保使用者在alloc 時,不會產生乙個多餘的物件

4.實現nscopying協議,覆蓋release,autorelease,retain,retaincount方法,以確保只有乙個例項化物件

5.在多執行緒的環境中,注意使用@synchronized關鍵字 

//

// usercontext.h

// singledemo

//// created by andyyang on 9/30/13.

//#import @inte***ce usercontext : nsobject

@property (nonatomic,retain) nsstring *username;

@property(nonatomic,retain)nsstring *email;

+(id)shareduserdefault;

@end

//

// usercontext.m

// singledemo

//// created by andyyang on 9/30/13.

//#import "usercontext.h"

static usercontext *singleinstance=nil;

@implementation usercontext

+(id)shareduserdefault}}

return singleinstance;

}+ (id)allocwithzone:(nszone *)zone;

return singleinstance;

}-(id)copywithzone:(nszone *)zone

-(id)retain

- (oneway void)release

- (id)autorelease

- (nsuinteger)retaincount

@end

#import #import "usercontext.h"

int main(int argc, const char * ar**)

return 0;

}

result:

IOS開發之 單例模式詳解

因為沒理解透,用著不踏實,所以決定做些除錯,了解透徹!看完如還有疑問可以進ios中高階開發群 118623167 和大家交流 按照一般的思路,如下 static myclass class nil implementation myclass myclass sharedmyclass return...

iOS的單例模式詳解

單例設計模式確切的說就是乙個類只有乙個例項,有乙個全域性的介面來訪問這個例項。當第一次載入的時候,它通常使用延時載入的方法建立單一例項。單例類,在整個專案中只有乙個例項,並提供乙個類方法供全域性呼叫,在編譯時初始化這個類,然後一直儲存在記憶體中,到程式退出時由系統自動釋放這部分記憶體。單例的實現 為...

ios中單例模式

單例模式的意思就是只有乙個例項。單例模式確保某乙個類只有乙個例項,而且自行例項化並向整個系統提供這個例項。這個類稱為單例類。import inte ce singleton nsobject singleton getinstance end implementation singleton sin...