私はそうすることができるかどうか疑問に思っています:
SBJsonParser *parser = [[SBJsonParser alloc] init];
id repr = [parser objectWithString:self];
return repr;
[parser release];
オブジェクトを返してから解放するのは良い習慣ですか? 情報をありがとう:)
私はそうすることができるかどうか疑問に思っています:
SBJsonParser *parser = [[SBJsonParser alloc] init];
id repr = [parser objectWithString:self];
return repr;
[parser release];
オブジェクトを返してから解放するのは良い習慣ですか? 情報をありがとう:)
簡単な答え: いいえ
ステートメントの後には何も実行できません。return
代わりに、オブジェクトを使用する必要autorelease
があります。これにより、周囲の AutoreleasePool の次のクリーンアップ実行内で割り当てが解除されます。
SBJsonParser *parser = [[[SBJsonParser alloc] init] autorelease];
return [parser objectWithString:self];
SBJsonParser *parser = [[[SBJsonParser alloc] init]]autorealease];//<<< auto release the object on creaion
id repr = [parser objectWithString:self];
return repr;
コンパイラは、return ステートメントの後に任意の行に到達しません (finally ステートメントを使用する場合を除く)。あなたはそれを手に入れましautorelease
た。
実際には、return ステートメントの後のコードは実行されません。glogic のソリューションが最適です。
プログラミングの基礎を学びましたか?return ステートメントの後、何も実行されません。