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
何か考えていただければ幸いです。おかげさまで
おかげさまで、私はまだ混乱しています。なぜなら、通常はinitを実行すると常にallocを行い、それを返すからです。たとえば、次のようになります。staticObject = [ClassA alloc] init];メモリが割り当てられました。 – Jeff
@Jeff、正しい。 staticObjectは少なくとも1の保持カウントを持つようになりました。これは今正しいものであり、プログラムの有効期間中存続します。あなたがそれを生きたいのであれば、alloc、copy、またはretainのどちらかを使って保持していることを確認してください。 –
偉大なインストラクター、皆さん。ありがとう.. – Jeff