【发布时间】:2014-01-19 05:44:06
【问题描述】:
例如,我有 Edge 和 Node 类:
@interface Node
@property ... NSArray *edges;
@end
@interface Edge
@property ... Node *nodeFrom;
@property ... Node *nodeTo;
@end
我应该如何定义这些属性 - 分配/保留?因为如果我将它们定义为分配的,那么它们可能会过早释放它们的内存。但如果我将它们定义为保留者,那么它们可能是紧密相连的,因为它们相互保留。
如何解决这个问题?
【问题讨论】:
-
听起来你想要垃圾回收。
-
我唯一的想法是使用
assign定义所有属性并将所有这些对象的保留数组存储在某处。 -
edges应该保留,因为它是您需要保留的数组本身(插入的对象将由数组保留)。我也会保留nodeFrom/To。声明一个dispose方法,当你不再需要一个对象时释放你的保留属性。 -
如果你的图没有循环,你可以把nodeFrom设为弱引用,问题就解决了。但是无向图在每个无向边上都有循环,这就是 gc 的用武之地。您编写的任何解决方案都将归结为您自己的 gc 实现。
标签: ios objective-c memory memory-management properties