Objective-C:聚合/组合用于决定强/弱参考

时间:2012-12-21 15:20:55

标签: objective-c

我最近一直在阅读关于聚合和组合的内容,以及组合基本上是一种关系,而聚合则不是。聚合似乎更像是一个熟人。我了解你,但我没有你。

与此同时,我一直在学习Objective-c内存管理以及强弱关键词。强大的是创建对象将拥有新变量而弱则不会。

那么,我能否得出结论:强和弱直接用于确定变量是复合变量还是聚合变量?

感谢

1 个答案:

答案 0 :(得分:1)

  

强弱用于确定变量   将是一个复合变量或集合变量?

恰恰相反。查看实现,您可以获得设计的线索,但设计决定了实现,因为它是一个更高级别的概念。

聚合和组合是两种遏制关系:

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

  • 合成是一种拥有或拥有一种关系,因此您使用强引用来暗示所有权。一旦容器被销毁,部件也将被销毁。

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

  • 指向并保留一个对象。它意味着所有权,因为只要存在强指针,就不会释放该对象。
  • 点但不保留对象。它并不意味着所有权,因为它不会影响对象的生命(这取决于其他地方是否存在强引用)。