1

我最近一直在这里阅读有关聚合和组合的信息,以及组合基本上是一种有关系而聚合不是。聚合似乎更像是一个熟人。我知道你,但我不拥有你。

同时我一直在学习objective-c内存管理和强弱关键字。强将是创建对象将拥有新变量,而弱则不会。

那么,我是否可以得出这样的结论,即强和弱直接用于确定变量是复合变量还是聚合变量?

谢谢

4

1 回答 1

1

strong 和 weak 用于确定一个变量是复合变量还是聚合变量?

恰恰相反。查看实现,您可以了解设计的线索,但设计决定了实现,因为它是更高层次的概念。

聚合和组合是两种包含关系:

  • 聚合是关系的一部分,而部分可能独立存在。也就是说,它们的存在与容器的生命周期无关,因此您使用不暗示所有权的弱引用来引用这些部分。

  • 组合是拥有或拥有的关系,因此您使用暗示所有权的强引用。一旦容器被破坏,部件也会被破坏。

weak 和 strong 是用于内存管理的 ARC 的所有权限定符:

  • 强项并保留一个对象。它意味着所有权,因为只要存在强指针,对象就不会被释放。
  • 弱点但不保留对象。它并不意味着所有权,因为它不会影响对象的生命周期(这取决于其他地方是否存在强引用)。
于 2012-12-21T18:03:09.150 回答