5

オブジェクトを割り当てて初期化し、次にそのオブジェクトを返したい場合、どのようにそれを返すことになっていますか?

私は次のコードを持っています:

NSXMLDocument* fmdoc = [[NSXMLDocument alloc] initWithContentsOfURL:trackInfoUrl
    options:NSXMLDocumentTidyXML error:&err];  
return [fmdoc autorelease];

これは正しいです?

4

1 に答える 1

4

それは正しいです。オブジェクトを初期化するので、それを解放または自動解放するのはあなたの責任です。

作成時の保持カウントは1であり、呼び出し元のメソッドがオブジェクトを使用する前に削除されないようにするため、自動解放が送信する正しいメッセージです。

リリースを送信した場合、メモリはすぐに再利用されます。自動解放を送信することにより、デフォルトの自動解放プールが空になるまでメモリが再利用されません。これは、呼び出し元のメソッドが必要に応じてオブジェクトを保持する機会が得られるまで発生しません。

于 2010-01-29T20:53:08.930 に答える