單例模式:總是返回自己的同乙個例項,它提供了對類的物件所提供的資源的全域性訪問點,並且返回的例項只能被例項化一次.
單例設計模式設計需要考慮的兩個問題:
(1) :發起呼叫的物件不能以其他分配方式例項化單例物件,否則,就有可能建立單例類的多個例項
(2) :對單例物件例項化的限制應該與引用計數記憶體模型共存.
singleton.h
#import
@inte***ce singleton : nsobject
+(singleton *) sharedinstance;
@end
singleton.m
#import "singleton.h"
@implementationsingleton
static
singleton *sharedsingleton = nil;
+(singleton *) sharedinstance
return
sharedsingleton; }
/*呼叫類的allocwithzone傳入nszone引數,為即將產生的新物件分配空間
過載的目的是當使用物件的alloc方法時不會產生新的例項
因為 alloc方法其實呼叫的就是 allocwithzone:null方法,防止因 alloc而產生其他的例項 */
+(id) allocwithzone:(struct
_nszone *)zone
/*這裡過載copywithzone的目的,是防止使用 copy 方法時產生其他的例項 */
-(id) copywithzone:(nszone *)zone
-(id) retain
-(nsuinteger) retaincount
-(void) release
-(id) autorelease
@end
iOS設計模式之單例模式
原則上,單例是在程式生命週期裡只被例項化過一次的 類。為了確保這一點,我們利用類的乙個靜態方法來生成和訪問物件。因此,你是通過以便利方法來訪問某個類的單例物件的,而不是用 alloc init或者靜態autorelease初始化方法。在很多時候,我們使用乙個某個類的唯一例項。最常見的就是乙個程式的主...
iOS設計模式之單例模式
單例模式是ios常用設計模式中的一種。單例設計模式的作用是使得這個類的乙個物件成為系統中的唯一例項,因此需要用一種唯一的方法去建立這個物件並返回這個物件的位址。那麼,我們何時使用單例模式呢?1 類只能有乙個例項,而且必須從乙個為人熟知的訪問點對其訪問。2 這個唯一的例項只能通過子類化進行擴充套件,而...
iOS設計模式之單例模式
單例模式是ios常用設計模式中的一種。單例設計模式的作用是使得這個類的乙個物件成為系統中的唯一例項,因此需要用一種唯一的方法去建立這個物件並返回這個物件的位址。那麼,我們何時使用單例模式呢?1 類只能有乙個例項,而且必須從乙個為人熟知的訪問點對其訪問。2 這個唯一的例項只能通過子類化進行擴充套件,而...