当转到另一个 UITableViewController 时 UITableViewController 冻结
Posted
技术标签:
【中文标题】当转到另一个 UITableViewController 时 UITableViewController 冻结【英文标题】:UITableViewController freezes when segue to another UITableViewController 【发布时间】:2013-10-17 16:24:53 【问题描述】:我有一个 TableViewController (VC1) 设置为推送到另一个 TableViewController (VC2)。这个连接是通过从 VC1 到 VC2 的 ctrl-drag 在情节提要中建立的。执行 segue 时,应用程序冻结,我看到 CPU 固定为 100%,内存使用量开始迅速攀升。我从自定义 VC2 开始,看到 viewWillAppear 被调用,并且 numberOfRowsInSection 等表委托方法正在正确执行。
为了缩小问题的范围,我可以看到即使是像 VC2 一样的普通 UITableViewController(没有自定义控制器类)也有同样的问题。但是当我将 VC2 设置为一个普通的 UIViewController(不是表)时,它就很好了。
我在我的应用程序的其他地方还有大约十几个 TableView -> TableView segues,它们的设置方式相同,并且没有问题。
VC1代码:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
[self performSegueWithIdentifier:@"myseguename" sender:self];
【问题讨论】:
尝试使用 Instruments 来诊断问题 所以我使用 Instruments 分析了我的应用程序,但这是我第一次使用它。我应该寻找什么?唯一立即引人注目的是我在主线程上看到了一堆中断事件。 【参考方案1】:原来我的问题是尝试使用外观代理设置 UITableView 的 backgroundView 引起的。在文档 (https://developer.apple.com/library/ios/documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html) 中发现 UITableView backgroundView 未标记为 UI_APPEARANCE_SELECTOR。
【讨论】:
以上是关于当转到另一个 UITableViewController 时 UITableViewController 冻结的主要内容,如果未能解决你的问题,请参考以下文章