1

私は最近ここでアグリゲーションとコンポジションについて読んでいて、コンポジションが基本的にどのようにあるかについて読んでいます-関係とアグリゲーションはそうではありません。集合体は知人のようです。私はあなたのことを知っていますが、私はあなたを所有していません。

同時に、Objective-cのメモリ管理と強いキーワードと弱いキーワードについて学びました。強いのは作成オブジェクトが新しい変数を所有し、弱いのは新しい変数を所有しないということです。

では、変数が複合変数になるのか集約変数になるのかを判断するために、強い変数と弱い変数が直接使用されるという結論に達することができますか?

ありがとう

4

1 に答える 1

1

変数が複合変数になるか集約変数になるかを決定するために、強い変数と弱い変数が使用されますか?

それは反対です。実装を見ると、設計の手がかりを得ることができますが、それはより高いレベルの概念であるため、設計によって実装が決まります。

集約と構成は、2種類の封じ込め関係です。

  • 集約は関係の一部ですが、部分は独立して存在する場合があります。つまり、それらの存在はコンテナの寿命とは関係がないため、所有権を意味しない弱参照を使用してパーツを参照します。

  • コンポジションは、has-aまたはowns-の関係であるため、所有権を暗示する強力な参照を使用します。コンテナが破壊されると、部品も破壊されます。

弱いものと強いものは、メモリ管理に使用されるARCの所有権修飾子です。

  • 強みとオブジェクトを保持します。強力なポインタが存在する限り、オブジェクトは解放されないため、所有権を意味します。
  • 弱点はありますが、オブジェクトを保持しません。オブジェクトの寿命に影響を与えないため、所有権を意味するものではありません(他の場所に強力な参照が存在するかどうかに依存します)。
于 2012-12-21T18:03:09.150 に答える