【发布时间】:2015-10-13 22:18:03
【问题描述】:
我正在使用UITabBarController,我的第三个选项卡观察到单例数据存储上的一个数组(在viewDidLoad 中实现)。
目前,如果我只是注销(并从 App Delegate 更改根视图控制器),当在第三个选项卡上调用 dealloc 并显示消息“无法删除关键路径“X”的观察者时,应用程序将崩溃,因为它没有注册为观察者。
使用断点,我看到viewDidLoad 从未在此第三个选项卡上调用,但是当我退出时会调用 dealloc。到底是怎么回事?我假设UITabBarController 在我进入情节提要时持有对第三个选项卡的引用,但不会“加载”该选项卡。然而,当我释放标签栏控制器时,iOS 会调用 dealloc。
我应该使用布尔值来跟踪viewDidLoad 的执行,还是尝试使用@try 语句删除观察者?有没有更好的整体设计?
【问题讨论】:
标签: ios objective-c iphone uitabbarcontroller