web-dev-qa-db-ja.com

このエラーを修正するにはどうすればよいですか:「ARCはXcodeで「リリース」の明示的なメッセージ送信を禁止します」

私は画像配列からiPhoneでシンプルなアニメーション画像を作成しようとしています:

- (void)viewDidLoad {
    NSArray *imageArray;
    imageArray = [[NSArray alloc] initWithObjects:
                  [UIImage imageNamed:@"Sun1"],
                  [UIImage imageNamed:@"Sun2"],
                  nil];
    fadeImage.animationImages = imageArray;
    fadeImage.animationDuration = 1;
    [imageArray release];  //==== HERE IS WHERE I GET THE ERROR ======

どうすれば修正できますか?

34
Victor Barba

ソリューション#1:

リリースステートメントを削除するだけです。 ARCが管理します。

[imageArray release]; // remove this line

ARCは自動参照カウントです。手動参照カウントの反対。
WWDCからの講演の素晴らしいビデオがいくつかあります。ご覧になりたい場合はリンクを提供できます。

ARCリリースノートへの移行 で、を参照してください。ARCは新しいルールを適用します

Deallocを明示的に呼び出したり、retain、release、retainCount、またはautoreleaseを実装または呼び出したりすることはできません。

禁止は、@ selector(retain)、@ selector(release)などの使用にまで及びます。

ソリューション#2:

コードをARCに変換したくない場合(たとえば、新しいアプリケーションを作成していないが、古いアプリケーションを維持している場合、またはARCに移行する価値がないほど多くのコードをインポートした場合)、ARCを無効にできます。

  • 選択したファイルのARCを無効にするARCを無効にするには、特定のファイルに-fno-objc-arcコンパイラフラグを使用できます。ターゲットを選択し、Build Phases-> Compile Sourcesに移動します。 Compiler Flagsを編集し、-fno-objc-arcを追加します

  • プロジェクトのARCを無効にする
    出典: Xcode4.2自動参照カウントを無効にする方法

    • 左側のオーガナイザーで、プロジェクトをクリックします。
    • 次の列でターゲットを選択します。
    • 上部の[ビルド設定]タブを選択します。
    • 「Objective-C Automatic Reference Counting」まで下にスクロールします(リストには
    • 「ユーザー定義設定」グループの下の「CLANG_ENABLE_OBJC_ARC」を選択し、NOに設定します。
78
Jean