我有一个数据结构,我试图存储在目标c中的ios5与ARC。数据结构就像-
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.我不能使属性变弱,因为如果这样做,我将失去指向该值的指针。因此,假设我将 page 中的图书设置为弱,那么当我尝试释放页面时,图书将被取消分配。然而,我仍然希望这本书能保持分配。
是否有其他方法可以存储此数据结构?
谢谢!
发布于 2012-05-04 00:44:20
我不明白为什么让页面->图书weak会让你失去这本书的指针。弱属性在它们指向的对象被释放之前不会自动为零。只要至少有一个其他对象对book有很强的引用,那么您就可以了。
因此,想象一个拥有图书NSArray的Library对象。数组保留添加到它的书籍,所以对该书的所有弱引用都将保持有效,直到书籍从数组中删除(并隐式释放)。
https://stackoverflow.com/questions/10440465
复制相似问题