Weak singleton「弱引用単例」
1089 ワード
原文リンク1原文リンク2の一般的な一例は、作成された後もメモリの中で存続する.例えば、ステップ登録の過程において、複数ページの情報共有のために作成された一例は、アクセスされると存続する.実際には、この情報は、その後のソフトウェアの使用過程においては不要である、これはある程度メモリの使用の浪費をもたらすが、弱い引用例はこの問題を解決し、彼の特別な点は、この例を使用するすべてのオブジェクトが解放された後、単例オブジェクト自体も解放されることである.
以下のコードを分析します. instance:静的局所変数、生存周期はプログラム実行期間全体 である. strongInstance:ローカル変数、生存期間は関数実行期間 次のプログラムの実行シーンをシミュレートします.
Weak singletonは簡単で巧みにweak特性を利用しており、instanceを誰も使用していない後に自動的に破棄され、sharedInstanceが再び呼び出されるとinstanceが再作成されます.以上
+ (id)sharedInstance {
static __weak ASingletonClass *instance;
ASingletonClass *strongInstance = instance;
@synchronized(self) {
if(strongInstance == nil) {
strongInstance = [[[self class] alloc] init];
instance = strongInstance;
}
}
return strongInstance;
}
以下のコードを分析します.
ASingletonClass A = [ASingletonClass sharedInstance];
// ASingletonClass ,instance
ASingletonClass B = [ASingletonClass sharedInstance];
// instance ASingletonClass
A = nil;
B = nil;
//ASingletonClass instance ,
Weak singletonは簡単で巧みにweak特性を利用しており、instanceを誰も使用していない後に自動的に破棄され、sharedInstanceが再び呼び出されるとinstanceが再作成されます.以上