は、私はクラスDoStuffがあると、そのクラスは大丈夫そうのObjective-C:自動解放混乱
- (NSMutableDictionary* returnToCaller) methodOne : (NSString*) myString {
NSMutableDictionary* bundleOfJoy = [[NSMutableDictionary alloc] init];
if (myString) {
bundleOfJoy = [self methodTwo];
}
return bundleOfJoy;
}
- (NSMutableDictionary* returnToMethodOne) methodTwo {
NSMutableDictionary* anotherDictionary = [[NSMutableDictionary alloc] init];
[anotherDictionary setObject: @"hardcodedstring" forKey: @"theKey"];
return anotherDictionary;
}
のように、2つのメソッドを持っているので、私の記憶管理-FUは、一種の弱いとして私と一緒にクマ。 releaseコマンドが呼び出されないので、リターン後に手動で作成された2つのディクショナリを解放することはできません。私は返品前にそれをすることはできませんまたは私は値を渡す。私の理解では、...
pool = [[NSAutoreleasePool alloc] init];
この自動解放プールにあるを処理する方法であり、そのような
NSMutableDictionary* anotherDictionary = [[[NSMutableDictionary alloc] init] autorelease];
としての私のオブジェクトを初期化してからならば、そう
[pool drain];
を呼び出しますそれは正しいです、どこで私はプールを初期化するのですか? awakeFromNibで?そして私は[プール排水]と呼ぶべきですか?
これが正しくない場合、誰かが私をまっすぐに(しかし、ゆっくりと入力してください)ことができます:あなたが返すオブジェクトをautorelease
する必要があるD
おかげ
感謝を。かなりそれぞれは、それぞれから何かを得ました。 – PruitIgoe