我有一个数据结构,我试图使用 ARC 存储在 ios5 的目标 c 中。数据结构类似于 -
Class - **Book**
@property (strong) NSArray *pages;
@property (strong) Page *startingPage;
Class - **Page**
@property (strong) Book *book;
@property (strong) Page *nextPage;
@property (strong) Page *previousPage;
可以想象的问题是内存泄漏。这里有几个周期——
Book -> pages -> page -> book
nextPage -> previousPage
Book -> startingPage -> book.
我不能使属性变弱,因为如果我这样做,我将失去指向该值的指针。因此,假设我在页面中将书籍设置为弱,那么当我尝试解除分配页面时,书籍将被解除分配。但是,我仍然希望这本书保持分配。
是否有其他存储此数据结构的方法?
谢谢!
我不明白为什么将页面>书weak
会失去指向这本书的指针。弱属性在解除分配弱属性指向的对象之前不会自动 nil'd。只要至少有一个其他对象对book
有很强的引用,你应该没问题。
因此,假设一个具有 NSArray 书籍的库对象。数组保留添加到其中的书籍,因此对该书籍的所有弱引用将保持有效,直到书籍从数组中删除(并隐式释放)。