移行中にアプリが断続的にフリーズします。デバッグモードでなんとかフリーズしたので、一時停止してスクリーンショットを撮りました。いくつかのメモ:
- フリーズ状態では、CPU はまだタップに反応していたので、何らかの形でまだ反応しています。
- スレッドを見ると、無限ループや重い関数などはないように見えました。
しかし、UI の ViewHierarchy を見ると、興味深いことが明らかになりました。トップ レベルの UIWindows が 2 つあり、トップ レベルは完全に空で、ボタン 1 はトランジション ビューによってオーバーレイされていました。
ここで考えられる犯人は何ですか?私のコードはスクリーンショットの下に含まれています:
// view controller
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let question = dataAccessor.objectAtIndexPath(indexPath)
delegate?.feedViewControllerDidSelect(self, question: question)
tableView.deselectRowAtIndexPath(indexPath, animated: true)
}
// delegate for viewcontroller
func feedViewControllerDidSelect(viewController: FeedViewController, question: Question) {
let questionDetailViewController = QuestionDetailViewController.create(question, delegate: self)
navigationController.pushViewController(questionDetailViewController, animated: true)
}
// Question Detail View
static func create(question: Question, delegate: QuestionDetailViewControllerDelegate?) -> QuestionDetailViewController {
let vc = StoryboardScene.QuestionDetail.instantiateQuestionDetailVC()
vc.question = question
vc.delegate = delegate
return vc
}