クラス メソッドに渡されたオブジェクトを保持および解放するためのベスト プラクティスは何ですか?
たとえば、次のように宣言された「クラス変数」があるとします。
static NSString *_myString = nil
...これを行うのは正しいことです:
+ (void)myClassMethod:(NSString *)param {
_myString = param;
}
...これには、呼び出し元が、途中で解放されないように、param でゼロ以外の保持カウントを維持する必要があるという欠点があります。あるいは、これを行うこともできます:
+ (void)myClassMethod:(NSString *)param {
[_myString autorelease];
_myString = [param retain];
}
dealloc
...これには、対応するクラスレベルの呼び出しがないとメモリリークが発生するという欠点があります。それとも、この種のオブジェクトの有効期間をより従来の方法で管理するシングルトン クラスを使用して、この種のクラス変数ごまかしを完全に回避する必要がありますか?
シングルトン インスタンスの作成に関する Apple のドキュメントは次のとおりです。
私が取り組んでいるコードは、非常に洗練された (しかしまだ新しい) Objective Resource プロジェクト ( http://www.iphoneonrails.com/ ) です。