11

私は Objective-C を初めて使用します。古いバージョンの Objective-C で記述された古い Objective-C プロジェクトを新しいプロジェクトに移植しようとしましたが、次のコンパイラ エラーが発生しました。

ARC forbids explicit message send of 'retain'

in 
color = [aColor retain];
or 
color = [[NSColor blackColor] retain];

私は、clang が現在使用している新しい自動参照カウントについて読んでいました。
また、Xcode のリファクタリング機能を使用しようとしましたが、うまくいきませんでした... この古いコードを置き換える必要がある適切な Objective-C コードは何ですか?

4

3 に答える 3

17

単に:

color = [NSColor blackColor];

releaseARC はオブジェクトの有効期間を管理するので、 、retainまたはそれ以上は必要ありautoreleaseません。

于 2013-01-22T16:48:51.037 に答える
11

ARC の主な利点は、プロジェクトで作成したすべてのオブジェクトの参照をコンパイラが自動的にクリアすることです。したがって、保持、解放、および自動解放の必要はありません。しかし、特定のファイルを ARC から解放したい場合もあります。xcode でプロジェクトを ARC からリリースするには。次の手順に従ってください。

1.Click your project for Build Phases.
2.Click the drop down menu named as "Compile Sources".
3.Double Click the file that you want to free from ARC.
4.Type the following to set the compiler flag.

       "-fno-objc-arc" 

このフラグは、xcode でコンパイラの ARC からその特定のファイルを解放します。

これがあなたのすべてのプロジェクトに役立つことを願っています。

于 2013-01-24T04:34:50.267 に答える
3

保持を削除するだけなので、次のようになります。

color = [NSColor blackColor]

ARC では、 、 を使用することはできretainませreleaseautorelease

于 2013-01-22T16:49:22.613 に答える