【发布时间】:2010-01-07 03:13:09
【问题描述】:
好的,请容忍我对我的情况的描述:
我有一个核心数据模型(在简化的描述中)包括一个 GridManager 对象。 GridManager 拥有一组 Grid 对象(通过一对多关系)。 Grid 对象包含一组 Cell 对象(通过一对多关系)。
在我的应用程序中,我有一个 GridView,其中包含一系列子视图(CellView 类型)。 GridView 有一个presentedGrid 属性,而CellView 有一个representedCell 属性(都是非原子的,保留)。在GridView的setRepresentedGrid方法中,我将每个CellView(GridView的子视图)的representedCell属性设置为representedGrid中的一个单元格。
现在,我有两个问题:
首先,由于单元格和网格都是托管对象,我还需要释放GridView和CellView类的representedGrid和representedCell属性吗?我想我会这样做(就像任何保留的属性一样),但有一次我认为这会导致我的应用程序出现问题 - 嗯......只是想,因为我编写了自己的设置器,而我实际上并没有保留网格/单元格,也许我不需要释放它们?
其次,gridManager 一次只有一个网格处于活动状态。当我将 gridView.representedGrid 从一个网格切换到另一个网格时,我如何“释放”第一个网格(及其关联的单元格),以便它不会不必要地占用内存(假设我们正在谈论托管对象)。
非常感谢!
【问题讨论】:
-
你为什么要编写自定义的 getter 和 setter?
-
参见下面的 cmets——我希望视图在设置了代表迷宫时处理某些设置功能——我认为这是需要为属性自定义设置器的标准原因。跨度>
标签: objective-c core-data release