0

サブクラス化するとき、私はすべてのプロパティに属性(非アトミック、強い)を与える傾向があります。ただし、IBOutletは、ペン先のトップレベルのオブジェクトではない場合(非アトミック、弱い)です。

そのような習慣が安全でなく、保持ループを作成したり、他のそのような悪影響を及ぼしたりする可能性がある場合がありますか?

ありがとうございました。

4

2 に答える 2

1

NSStrings の場合は、(非アトミック、コピー) を使用する必要があります。

于 2012-07-19T23:46:16.920 に答える
1

はい、この習慣は安全ではない可能性があります。なぜなら、プロパティ属性を与える規則に従っていないように見えるからです。

これを行う正しい方法は、プロパティがどのように使用されるかを考え、それに対応する属性を与えることです。

これがうまくいかない場合は次のとおりです。

  • デリゲート: サイクルを保持します。
  • メモリ管理: 2 つのクラス間で共有されるイメージは使用できなくなり、両方で nil する必要があります。
  • スレッド: 複数のスレッドによってアクセスされるプロパティ。

あなたのための非常に簡単なガイド:

プロパティが主にクラスに属している場合でも、クラスがそれを共有している場合: strong クラスが機能するプロパティが必要: strong (ただし、不要になった場合はポインターを nil することを忘れないでください) このプロパティが別のクラスに属している場合: weakデリゲート: 弱い IBOutlets: 弱い

同時実行属性については、プロパティが複数のスレッドで使用される可能性があることがわかっていない限り、通常は非アトミックで問題ありません。その後、アトミックとして設定します。

これは非常に漠然としたガイドですが、ARC の下で非常にうまく機能しています。

于 2012-07-20T00:19:52.060 に答える