私はObjective-C言語のメモリ管理ガイドを読みましたが、この章を何度も読んだ後でも、これはまだ疑問です。
次のようなオブジェクトのメソッドで作成したオブジェクトを返したいとします。
NSString* ret = [[NSString alloc] initWithString:@"My string"];
return ret;
私はこれを行うことができますが、所有権ポリシーに従って正しくありません。ガイドは、正しい解決策は次のようになると述べています。
NSString* ret = [[NSString alloc] initWithString:@"My string"];
return [ret autorelease];
自動リリースしているので、私はもはや所有者ではないからです。私の質問は、NSStringが実際にリリースされ、割り当てが解除されるのはいつかということです。最後に初期化されたプールが解放されたのはいつですか?これは、プールを作成しない場合、アプリケーションが閉じられたときにこのオブジェクトが解放されることを意味します(xcodeがデフォルトで作成するプールは最後に解放されます)。これは正しいです?同じことが、次のように私によって割り当てられていないオブジェクトにも当てはまります。
NSString* ret = [NSString stringWithString:@"My string"];
?他の場所で解放するためのプールを作成しない場合、xcodeによって作成されたプールが解放されるときに、アプリケーションの最後に解放されますか?ご説明いただきありがとうございます。