iOS - 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序

时间:2015-09-22 07:10:08

标签: ios objective-c uitableview

安装了Xcode 7.1 Beta并在iOS 9.0上测试了我的应用程序并得到以下错误。我在这里提出了不同的问题。

我正在使用IIViewDeckController进行左侧菜单和PullRefreshTableViewController。在app委托中,我注册到不同的通知并给出webservice调用来获取VC1(Menu1)和VC2(Menu2)的视图控制器的数据,两者都继承了PullRefreshTableViewController。首先显示VC1。当用户导航到VC2时,视图会被拉入数据但会因以下异常而崩溃。

***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'类UIView的实例0x7fa8c541eaf0已取消分配,而键值观察者仍在其中注册。目前的观察资料:(  上下文:0x0,属性:0x7fa8c1d1b470> )'

***第一次抛出调用堆栈: (

$?

libc ++ abi.dylib:以NSException类型的未捕获异常终止

**注意:**相同的代码可在iPad上正常运行

3 个答案:

答案 0 :(得分:0)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{

    UIStoryboard* mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle: nil];
    UIViewController* menuController = [mainStoryboard instantiateViewControllerWithIdentifier:@"LeftSideMenu"];

    UINavigationController* navigationController = (UINavigationController *) self.window.rootViewController;
    self.viewDeckController =  [[IIViewDeckController alloc] initWithCenterViewController:navigationController leftViewController:menuController rightViewController:nil];
    self.window.rootViewController = self.viewDeckController;
}

OR https://github.com/edgecase/ECSlidingViewController

以防万一无法解决问题。

答案 1 :(得分:0)

如果你的桌子被重新加载,你可能会失去你的观点,我的意思是,他们被解除分配。如果有某些连接beetwen deallocated视图和值某处导致崩溃。您需要在解除分配之前停止观察值以避免崩溃。检查这个场景。

答案 2 :(得分:0)

这对我有用。 问题在于推动对IIViewDeckController的查看。

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

UINavigationController *centerController = [[UINavigationController alloc] initWithRootViewController:appDelegate.viewController];
[appDelegate.viewDeckController closeLeftViewBouncing:^(IIViewDeckController *controller)
 {
     appDelegate.viewDeckController.centerController = centerController;
 }];

谢谢你的输入人员。 :)