2011-01-07 8 views
1

は、我々は、私はメモリ管理ビューからこの静的オブジェクト変数をマップする方法、に関する午前何オブジェクトC静的変数メモリの質問

、オブジェクトCに静的変数のパラメータを定義します。

@interface classA:NSObject 
+ (id) getInstance; 
@end 

static ClassA staticObject = nil; 
@implementation ClassA 
+ (id){ 
     if(staticObject) 
     staticObject = [doinitStuff]; 
     return staticObject 
} 
@end 

例えば

今の質問は:それはリリースされるときstaticObjectメモリ、 を保持する責任が誰ですか。

私が何を考えています:

をランタイムOSは、アプリケーションを監視し、アプリケーション本当に終了し、このメモリが解放されますときにのみ。 RUNtimeビューから、それは保持され、カウント= 1; //ちょうど1

何か考えていただければ幸いです。おかげさまで

答えて

2

他の変数と変わりはありません。あなたがそれを固執したい場合は、retainです。そうでない場合は、(または、保持していれば、それを解放/自動解放しないでください)。

アプリケーションの終了時にメモリを解放する必要はありません。あなたのアプリケーションが終了すると、すべてのリソースは何の関係もなく収穫されます。

+0

おかげさまで、私はまだ混乱しています。なぜなら、通常はinitを実行すると常にallocを行い、それを返すからです。たとえば、次のようになります。staticObject = [ClassA alloc] init];メモリが割り当てられました。 – Jeff

+0

@Jeff、正しい。 staticObjectは少なくとも1の保持カウントを持つようになりました。これは今正しいものであり、プログラムの有効期間中存続します。あなたがそれを生きたいのであれば、alloc、copy、またはretainのどちらかを使って保持していることを確認してください。 –

+0

偉大なインストラクター、皆さん。ありがとう.. – Jeff

関連する問題