0

私は ARC に関するいくつかのチュートリアルを読みましたが、プロパティの宣言についてはまだ少し混乱しています。次のパターンを使用して、ほとんどのコードを作成しました。

@property (readwrite, nonatomic) PlayerData* playerData;
@property (readwrite, nonatomic) MusicLayer* musicLayer;
@property (readwrite, nonatomic) bool isPowerUpAvailable;

ようやくメモリリークに対処し始めたので、XCode は、いくつかのコードで、プロパティ宣言に「retain」キーワードを追加する必要があることを提案しました。

ARC を使用することで、カウントの保持について「気にする」べきではないと考えました。私が取得していない、または欠落している概念はありますか? チュートリアルの参照や説明は大歓迎です。

4

2 に答える 2

4

ARC はプロパティ宣言に基づいてオブジェクトを保持します。保持する必要があるプロパティstrongと保持する必要のないプロパティに使用する必要weakがあります。

weakオブジェクトの割り当てが解除されると、プロパティも null になります。

コンパイラは常にプロパティがreadwrite存在すると想定するため、このように宣言する必要はありません。

@property (strong, nonatomic) PlayerData* playerData;
@property (strong, nonatomic) MusicLayer* musicLayer;
// Need use assign since strong is for objects only.
@property (assign, nonatomic) bool isPowerUpAvailable;
于 2013-03-29T11:53:32.970 に答える
0

コードを引き続き使用する場合は、必要な特定のファイルでのみ ARC を除外でき.mます。

[Targets] > [Build Phases] > [Compile Sources ] に移動し、ファイルを選択して、.m選択した右側の列をダブルクリックし、選択したファイルのみ-fno-objc-arcを除外するように追加しARCます。

または、ARC を使用してすべてのアプリケーションを新しいコードに変換する場合は、プロジェクトのバックアップを作成した後、次の場所に移動します。

編集>リファクタリング>Objective-C ARCに変換し、その後同じことを行いますが、最新のObjective-C Sintaxに変換をクリックします

ここに画面:

ここに画像の説明を入力 プロジェクトを複製する前に、常に機能しているとは限らないことに注意してください。

これがあなたを助けることを願っています

于 2013-06-30T11:35:27.987 に答える