使用双向弱指针

时间:2015-10-19 21:35:46

标签: ios objective-c weak-references

我发现自己陷入了一个小难题。 我有可能在两个兄弟级别对象之间创建循环依赖关系。我希望两者都留在记忆中,而且两个实例都不比另一个更重要/更重要。我是否应该随意使一方的指针变弱,另一方强大,或者我可以让双方都变弱?

假设你有一个像这样的结构的对象模型......

ADatabaseTable
   -(NSArray)fields
       FieldInfo  (field A)
       FieldInfo  (field B)
   -(NSArray)values
       FieldValue (field A - record 1)
       FieldValue (field A - record 2)
       FieldValue (field B - record 1)
       FieldValue (field B - record 2)

...并且您希望FieldValue具有对FieldInfo的引用,反之亦然。

如何指定属性属性(弱/强)以使这些属性相互引用?

由于

1 个答案:

答案 0 :(得分:2)

据推测,ADatabaseTable强烈引用了fields数组和values数组。

普通NSArray保留对其元素的强引用,因此您已经不必担心数组中的元素会消失。

所以你可以让信息和价值相互弱化。