2

古いコードを ARC コードに変換しようとしています。ただし、次の行でビルドエラーが発生します

[[token retain] autorelease];

次の順序で 3 つのエラーが発生します。

-'autorelease' は使用できません: 自動参照カウント モードでは使用できません

-[リライター] 未使用の「autorelease」メッセージを削除するのは安全ではありません。その受信機はすぐに破壊される可能性があります

- ARC は「autorelease」の明示的なメッセージ送信を禁止します

この特定の行を削除すると、コードは正しくコンパイルされます

4

3 に答える 3

6

それがすべての行にある場合は、おそらくそれを削除できます。そのコードは、オブジェクトへの参照を主張していますが、後で解放することを心配したくないとも言っていますが、ARC では心配する必要はありません。

コンテキストが不足しているため、Xcode が自動的に削除しなかったと推測しています。returnステートメントなど、より一般的な場所にあった場合、意図が何であるかは明らかです. それがすべて単独である場合、それはもっと複雑なものになる可能性がありますが、おそらくそうではありません.

于 2012-09-07T23:28:58.563 に答える
4

ARC がメモリを管理するので、「autorelease」、「release」、「retain」などを呼び出す必要はありません。呼び出します。メモリを手動で管理する場合は、ARC を無効にするか、コンパイラ フラグ「-fno-objc-arc」を使用して特定のクラスで ARC を無効にします。

于 2012-09-07T23:23:25.660 に答える
0

ARC は、解放、保持、またはその他の厄介なメモリ管理を使用する必要がないことを意味します。アプリをコンパイルすると、ARC によってすべてが自動的に追加されます。詳細はこちら

すべてのメモリ管理呼び出しを削除するのが最善の解決策ではない古いコードがある場合は、この回答を確認して、特定のファイルの ARC を無効にします。

于 2012-09-07T23:25:41.657 に答える