19

ARCが有効になっているときにプリミティブデータ型(boolなど)の合成プロパティを書き込む正しい方法は何か疑問に思っていました。ARCを使用したプリミティブデータ型の合成プロパティ - weakまたはassign?

私はARCの前にこれを使用するために使用:

@property(assign) bool isOn; 

しかし、それは、ARCが有効になっているときにassignを使用してはならないというのが私の理解(多分間違った)です。私はこれをweakに置き換えようとしましたが、エラーが発生します。 -

"弱い"属性のプロパティはオブジェクト型でなければなりません。

assignを引き続き使用してください。

答えて

29

Assignです。 ARCは「Automatic Reference Counting(自動参照カウント)」の略で、プリミティブデータ型には参照カウントがありません。

Weakオブジェクトが存在しないため、またはARCが管理する参照がないために失敗しました。

+0

ですから、assignはweakの完全な同義語ではありません。しかし、もう一度、弱いのはデフォルトですか? –

+0

デフォルトではARCは強い – deimus

+0

"Assign is fine"と書いています。それはそれに素敵な韻を持っていますが、それはポイントを回避するようだ: "割り当て"が必要です! 「割り当て」を使用しないとどうなりますか? – Rhubarb

0

ARCを有効にすると、(ex:BOOL)のようなプリミティブデータの合成プロパティを書き込むことができます。 @property(unsafe_unretained)bool isOn;

関連する問題