在我的 iOS 应用程序中,我想使用 UITableViewController 向用户展示一个项目表,让他们选择一个项目,然后将该项目返回到另一个视图控制器。我可以通过为表视图控制器定义协议和委托方法来成功地做到这一点,以模态方式呈现表视图控制器,然后在用户选择项目并将项目返回到委托视图控制器时将其关闭。但是,如果我还为表格视图实现搜索显示控制器(以便用户可以在更长的列表中搜索特定项目),我会遇到内存问题。我已经修改了苹果的“TableSearch”示例来演示这一点,并将代码发布在https://github.com/pistachionut/Table-Search-Example
简而言之,在表格视图中选择一个单元格后,应用程序通常会因 EXC_BAD_ACCESS 而崩溃。使用 NSZombieEnabled 运行它表明表视图控制器在其保留计数达到 0 后被 -[UISearchDisplayController _destroyManagedTableView] 调用。有人知道为什么会这样吗?我不认为我正在做任何超出我负责的表格视图控制器的额外发布。我使用 alloc 和 initWithNibName 创建它,以模态方式呈现它,然后立即释放它(参见我示例中“PickProductViewController.m”文件中的 -(IBAction)showProductPicker:(id)sender)。谢谢!