2012年12月31日 星期一

Class Method (二):Signleton

如果你有要在多執行續使用 signletion 的話,請改看這篇文章。
Class Method (三):Signleton 改 - 在多執行續的解法

之前有說到 Class Method 還有另一種用法,就是 Singleton,
它是在第一次宣告這個 Class 取得記憶體位置之後,
之後的宣告都不會改變它的記憶體位置的使用方法,
假設現在有兩個 Class,一個是 aClass、另一個是 bClass,還有一個使用 Singleton 方法的 cClass
aClass 與 bClass 都會宣告 cClass,
這時候不管是哪個 Class 先宣告,另一個 Class 裡的都會使用到相同記憶體位置的 cClass,
像是需要保持資料庫的連結時就會這麼做,
在 Objective-C 中內建的 Class 中,UIDevice、NSBundle 等等都有這種用法,
說明就到此為止,接下來就教怎麼做。

首先與上一篇的建立 Class Method 的方法一樣,
不過比較不同的的是 Singleton 通常不會有傳值的動作。

Method.h
+ (id)method;

建立完了以後就是來實作它了

Method.m
+ (id)method
{
	static Method *singleton = nil;
	if (singleton == nil) {
		singleton = [[Method alloc] init];
	}
	return singleton;
}

Singleton 與一般的 Class Method 的差別是 Singleton 完全不需要 release,
因為它的記憶體位置是需要被保留下來的,
所以之後它只要在第一次宣告之後,
未來的宣告都會使用相同的記憶體位置。

這次的教學就到此為止,下次等我有想到有不同的教學再來吧。

沒有留言: