0

重複の可能性:
@property および保持、割り当て、コピー、非アトミック

プロパティの概要を教えてもらえますか: retainassigncopynonatomic私はiPhone開発の初心者であり、これらをいつどのように使用すればよいかわかりません

前もって感謝します。

4

1 に答える 1

4

独自のゲッター/セッターを使用する場合、これらのキーワードはあまり意味がありませんが、@property/@synthesize を使用する場合はキーワードを使用する必要があります。

  • 保持: この場合、そのオブジェクトの保持カウントである余分なオブジェクトが作成され、保持ごとに 1 ずつ増加し、arc を使用している場合はそれを解放する必要があります。また、retain は強い参照を作成し、すべての強い参照が解放されるまでオブジェクトの割り当てを解除することはできません。

  • コピー: コピーは、操作するオブジェクトのコピーを提供するだけであり、コピーされたオブジェクトで変更された実際の値は実際のオブジェクトに反映されないため、保持の逆です。setter パラメーターが変更可能である可能性があるが、警告なしにプロパティの内部状態を変更できない場合は、コピー アクセサーを使用する必要があります。

  • Assign:Assign は通常、オブジェクト以外のデータ型に使用されます。

  • 非アトミック: 非アトミックはスレッド セーフを提供しますが、デフォルトのアトミックはそうではありませんが、アトミックの読み取り/書き込みはスレッド セーフであり、読み取り/書き込みのシリアル化を保証するオブジェクト レベルのロックを使用します。また、ゲッターから返される値またはsetter を介して設定されたものは、他のスレッドが同時に実行されているかどうかに関係なく、常に完全に取得または設定されます。strong、copy、またはretain を指定し、nonatomic を指定しない場合、参照カウント環境では、オブジェクト プロパティの合成された get アクセサーロックを使用し、戻り値を保持および自動解放します。

于 2012-05-08T08:48:20.493 に答える