1

このようなメソッドがあるとします。

-(void)doSmth {
    NSString *one = [[NSString alloc] initWithFormat:@"%@",someNumber];

    NSString *two = [[NSString alloc] initWithFormat:@"%@",someOtherNumer];

    [one release];
}

プロジェクトは ARC なしで作成されました。ARCに変換したいです。

私の質問は: アークに変換した後、リークはありますか?

ありがとう

4

3 に答える 3

1

いいえ。ARCコンバーターはへの明示的な呼び出しを削除し、コンパイラーはコンパイル時に両方のreleaseリリース呼び出しを自動的に挿入します。onetwo

最終結果:ここにリークはありません。

于 2012-04-30T21:35:46.070 に答える
0

ここに画像の説明を入力

完全なプロジェクトを ARC に変換する必要がある場合は、[編集] -> [変換] -> [Objective-C ARC] に変換します。

または、特定のファイルを変換する必要がある場合は、 projectNav ->build Phases ->その特定の .m ファイルのソースをコンパイル -fno-objc-arc を追加します。

ここに画像の説明を入力

于 2016-04-07T09:00:35.420 に答える
0

[one release];ARC ではエラーが発生するため、削除する必要があります。

あなたの質問に関しては、ARCに切り替えた後(およびリリースステートメントを削除した後)、リークしません。

編集:おそらく次のようにコードを書く方が良いでしょう:

NSString *one = [[NSString alloc] initWithFormat@"one"];

またはこのように:

NSString *one = @"one";
于 2012-04-30T21:08:39.287 に答える