1

我在我的应用程序中遇到问题,我在导航控制器中有以下结构:

RootView (Menu) -push-> UITableViewController with a UISearchDisplay Controller -selecting a row pushes-> Detail View Controller for the selected object

在详细视图控制器上,有一个返回主菜单的选项,它调用:

[self.navigationController popToRootViewControllerAnimated:YES];

所有这些在模拟器上都可以正常工作。在 iPhone 5S 上进行测试时,我遇到了崩溃。

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Subtype: KERN_INVALID_ADDRESS at 0x00000001d2a4beb8
Triggered by Thread:  0

Thread 0 Crashed:
0   libobjc.A.dylib                 0x000000018f8479d0 objc_msgSend + 16
1   UIKit                           0x000000018689309c -[UISearchBar willMoveToSuperview:] + 64
2   UIKit                           0x0000000186a6cea0 __UIViewWillBeRemovedFromSuperview + 188
3   UIKit                           0x000000018679c3f0 -[UIView(Hierarchy) removeFromSuperview] + 68
4   UIKit                           0x000000018679f4f8 -[UIView dealloc] + 420
5   UIKit                           0x0000000186883350 -[UIScrollView dealloc] + 968
6   UIKit                           0x0000000186943c3c -[UITableView dealloc] + 1300
7   UIKit                           0x0000000186934108 -[UIViewController dealloc] + 460
8   UIKit                           0x00000001869b85f8 -[UITableViewController dealloc] + 288

它似乎正在崩溃,因为由于某种原因它没有释放 UISearchBar。当我删除搜索显示控制器时,一切正常。

此外,如果我使用 UINavigationController 提供的“返回”按钮,则不会发生崩溃。只有当我从堆栈上比导航控制器更高的 ViewController 弹出到根时,才进行搜索。

任何帮助将不胜感激,因为我完全被难住了。

  • 编辑 - 另一个发现 - 所有代表似乎都正确连接。我正在使用 Storyboard 来设计工作流程。如果我删除 UISearchBar,但不删除 SearchDisplayController,它不会崩溃。它似乎只依赖于 UISearchBar 元素(根据崩溃日志这很有意义)。
4

0 回答 0