8

iOS ターゲット 5.1 に xcode 4.4.1 を使用しています。ARC を使用してプロジェクトを開始しました。プロジェクトの途中で、アーク以外のサードパーティ ソースをプロジェクトに追加しました。この時点で、xcode でリファクタリングを試みることにしましたが、エラーが発生します。それは私のオリジナルのソース コードの 1 つから来ています。

私は (nonatomic, weak) のプロパティを持っていて、それを合成しました ==> 'weak' プロパティの合成は ARC または GC モードでのみ許可されます。

私は困惑しています-私はarcを使用していますが、arcでのみ許可されていると不平を言っています??

現時点では、サードパーティのアプリを他のプロジェクトからリファクタリングし、自分のプロジェクトが機能するようにコピーしましたが、上記の理由を理解したいのですが. ありがとう!(ちなみにアークにコンバートするとターゲットは現在ARCを使用しているとのこと)

4

3 に答える 3

1

iOS 6.1 を対象とする Xcode 4.6.3 を使用して同じ症状が発生しました。別のプロジェクトから ARC 以外のクラスを取り込んで、リファクタリング メニューを介して変換しただけで、既存のクラスで後続のビルドが失敗し、表示されたエラーが発生しました (「「弱い」プロパティの合成は、arc または gc でのみ許可されています)。モード")。

プロジェクトのプロパティは、それがまだ ARC プロジェクトであることを明確に示していましたが、コンパイラは、問題のクラスがこれに該当することを忘れていたようです。

プロパティを「strong」に設定し、リファクタリング メニューを使用してそのクラスを ARC に変換することで、この問題を回避しました。当然のことながら、変更は必要ないと言われましたが、クリックした [保存] ボタンが表示されました。その後、プロパティを「弱い」に戻し、プロジェクトをコンパイルすることができました。(一部のメタデータが途中で同期しなくなったと推測しています。)

編集: 他の ARC 準拠のクラスを ARC に「リファクタリング」する必要がありました。コンパイルしても警告が生成され、アプリでクラッシュが発生したからです。この話の教訓は、プロジェクト全体をリファクタリングに含める方が安全かもしれないということだと思います...

于 2013-08-28T15:51:16.413 に答える
-1

代わりに以下を使用してください:

@property(nonatomic,assign)

*注-これは弱いと同じではありませんが、非常に似ています。Weakはオブジェクトをnilに設定しますが、assignは設定しません。

于 2012-09-15T16:28:04.397 に答える