0

私はそうすることができるかどうか疑問に思っています:

 SBJsonParser *parser = [[SBJsonParser alloc] init];
    id repr = [parser objectWithString:self];

    return repr;
    [parser release];

オブジェクトを返してから解放するのは良い習慣ですか? 情報をありがとう:)

4

6 に答える 6

3

簡単な答え: いいえ

ステートメントの後には何も実行できません。return

代わりに、オブジェクトを使用する必要autoreleaseがあります。これにより、周囲の AutoreleasePool の次のクリーンアップ実行内で割り当てが解除されます。

SBJsonParser *parser = [[[SBJsonParser alloc] init] autorelease];
return [parser objectWithString:self];
于 2012-06-01T09:10:35.620 に答える
1
SBJsonParser *parser = [[[SBJsonParser alloc] init]]autorealease];//<<< auto release the object on creaion
    id repr = [parser objectWithString:self];

    return repr;
于 2012-06-01T09:05:33.860 に答える
0

コンパイラは、return ステートメントの後に任意の行に到達しません (finally ステートメントを使用する場合を除く)。あなたはそれを手に入れましautoreleaseた。

于 2012-06-01T09:07:55.253 に答える
0

実際には、return ステートメントの後のコードは実行されません。glogic のソリューションが最適です。

于 2012-06-01T09:08:10.420 に答える
0

プログラミングの基礎を学びましたか?return ステートメントの後、何も実行されません。

参照: メソッドが戻った後に NSLog() が何もしないのはなぜですか?

于 2012-06-01T09:08:57.640 に答える