2016-08-29 3 views
0

私が開発している時計アプリはARCを使用していません。そして、私はdeallocの各インターフェイスのオブジェクトのすべてのプロパティを以下のように解放します。ARCのないWatchKitは、deallocのときにクラッシュする

-(void)dealloc { 

    [obj1 release]; 
    [obj2 release]; 
    ... 
    [super dealloc]; 
} 

これは、インターフェイスを閉じると(たとえば、メインインターフェイスに戻る)クラッシュします。なぜこれはそうですか?

+0

*私が開発している時計アプリはARCを使用していません。*あなたはARCを採用していないので、手動で数を参照しようとすると難しくなります(手動でカウントするとクラッシュやリークが発生します)ツールが自動的にあなたのためにそれを行うようにするのではなく、b)将来移植されなければならない廃止されたコードを書くこと。 –

+0

私は選択肢がありません。時計アプリがアタッチされる現在のプロジェクトにはARCがありません。 – GeneCode

+0

既存のiOSアプリがARCを使用していないという理由だけで、新しい時計アプリもARCを使用できないというわけではありません。ターゲット設定*プロジェクトの設定を上書きすることができます。これにより時計アプリがARCサポート付きでコンパイルされますが、iOSアプリはアップグレードするまでARCを使用し続けることができます。 –

答えて

1

保持と解放は、クラスのコンテキストでバランスをとる必要があります。おそらく、あなたがそれらのインスタンス変数の1つに割り当てられたときには保持していない可能性があります。したがって、それは過剰リリースです。その場合、ゾンビが解放されたインスタンスにメッセージをキャッチできるようにすることができます。

関連する問題