0

我有一个数据结构,我试图用 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.

我不能使属性变弱,因为如果这样做,我将丢失指向该值的指针。因此,假设我将Page中的book设置为较弱,那么当我尝试释放页面时,book 将被释放。但是,我仍然希望这本书保持分配状态。

是否有任何替代方式可以存储此数据结构?

谢谢!

4

1 回答 1

1

我不明白为什么制作 Page->bookweak会让你失去指向这本书的指针。在它们指向的对象被释放之前,弱属性不会自动归零。只要至少有一个其他对象对您有强引用就book可以了。

所以想象一个图书馆对象有一个 NSArray 书籍。该数组保留添加到其中的书籍,因此对该书的所有弱引用将保持有效,直到该书从数组中删除(并隐式释放)。

于 2012-05-04T00:44:20.223 回答