【发布时间】:2010-04-10 06:22:58
【问题描述】:
项目
我正在开发一个相对简单的 iPhone OS 项目,该项目基于导航控制器,具有根表视图和详细表视图。点按主列表中的项目以在推送的表格视图中查看其详细信息。
设置
我将两个视图的数据源分解为它们自己的对象,以免混淆视图控制器的目的。完成此操作后,表视图不再具有数据源,因为这些方法现在位于单独的文件中,因此我使用 Object 项在适当的 XIB 文件中创建了每个数据源类的实例(将其拖入,然后设置其类) .然后,为了将 tableview 实际连接到它们的数据源,我将每个 tableview 的 dataSource 出口设置为 Interface Builder 中的黄色数据源对象。表视图委托仍设置为其视图控制器。
问题
根表视图工作得很好,但是当您点击一行以推送到详细视图时,数据源对象会按预期实例化,然后立即释放,导致崩溃(numberOfSectionsInTableView:在释放时调用目的)。我无法弄清楚为什么数据源在我需要它时自动解除分配当时和那里用于详细视图,正如我在 Interface Builder 中的数据源对象创建和 tableview 连接所示.更令人困惑的是,这种方法对根 tableview 效果很好!
问题
有什么明显的我遗漏会导致这种情况发生吗?或者,这甚至是为表视图控制器实例化数据源的正确方法吗?从 view 控制器中执行它似乎是糟糕的面向对象编程,它应该只关心视图。我可以把所有东西都塞进两个表视图控制器类中,它可能会工作,但它不会像我想要的那样模块化。
谢谢!
【问题讨论】:
标签: iphone cocoa-touch dealloc