替代数据结构 - 使用 ARC 防止 ios5 中的内存泄漏



我有一个数据结构,我试图使用 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 书籍的库对象。数组保留添加到其中的书籍,因此对该书籍的所有弱引用将保持有效,直到书籍从数组中删除(并隐式释放)。

相关内容

  • 没有找到相关文章

最新更新