0

该项目

我正在开发一个相对简单的 iPhone OS 项目,该项目基于导航控制器,具有根表视图和详细表视图。点击主列表中的项目以在推送的表格视图中查看其详细信息。

设置

我将两个视图的数据源分解为它们自己的对象,以免混淆视图控制器的目的。完成此操作后,表视图不再具有数据源,因为这些方法现在位于单独的文件中,因此我使用 Object 项在适当的 XIB 文件中创建了每个数据源类的实例(将其拖入,然后设置其类) . 然后,为了将 tableview 实际连接到它们的数据源,我将每个 tableview 的 dataSource 出口设置为 Interface Builder 中的黄色数据源对象。表视图委托仍设置为其视图控制器。

问题

根表视图工作得很好,但是当您点击一行以推送到详细视图时,数据源对象会按预期实例化,然后立即解除分配,导致崩溃(numberOfSectionsInTableView:被释放的对象调用)。我无法弄清楚为什么当我需要它时数据源会自动解除分配,因为我需要它获取详细信息视图,正如我在 Interface Builder 中的数据源对象创建和 tableview 连接所表明的那样。更令人困惑的是,这种方法非常适用于根表视图!

问题

有什么明显的我遗漏会导致这种情况发生吗?或者,这甚至是为表视图控制器实例化数据源的正确方法吗?从视图控制器中执行它似乎是糟糕的面向对象编程,它应该只关心视图。我可以把所有东西都塞进两个表视图控制器类中,它可能会工作,但它不会像我想要的那样模块化。

谢谢!

4

1 回答 1

1

您的详细信息表视图控制器数据源的属性是什么样的?你打电话保留吗?问题可能是您有:

@property (nonatomic, assign) IBOutlet id <UITableViewDataSource> dataSource

代替:

@property (nonatomic, retain) IBOutlet id <UITableViewDataSource> dataSource
于 2010-04-10T06:26:29.983 回答