iOS-由于未捕获异常“NSInternalInconsistencyException”而终止应用程序
安装了Xcode 7.1测试版,并在iOS 9.0上测试了我的应用程序,发现以下错误。我在这里详细讨论了不同的问题 我使用IIViewDeckController作为左菜单和PullRefreshTableViewController。应用内委托我注册到不同的通知,并发出webservice调用以获取VC1Menu1和VC2Menu2的视图控制器的数据,这两个控制器都继承了PullRefreshTableViewController。首先显示VC1。当用户导航到VC2时,视图会加载拉取的数据,但会崩溃,出现以下异常 ***由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因是:“UIView类的实例0x7fa8c541eaf0已解除分配,而键值观察员仍在向其注册。当前观测信息: 上下文:0x0,属性:0x7fa8c1d1b470> " ***第一次抛出调用堆栈: libc++abi.dylib:以NSException类型的未捕获异常终止 **注:**相同的代码在iPad上正常工作,没有错误iOS-由于未捕获异常“NSInternalInconsistencyException”而终止应用程序,ios,objective-c,uitableview,Ios,Objective C,Uitableview,安装了Xcode 7.1测试版,并在iOS 9.0上测试了我的应用程序,发现以下错误。我在这里详细讨论了不同的问题 我使用IIViewDeckController作为左菜单和PullRefreshTableViewController。应用内委托我注册到不同的通知,并发出webservice调用以获取VC1Menu1和VC2Menu2的视图控制器的数据,这两个控制器都继承了PullRefreshTableViewController。首先显示VC1。当用户导航到VC2时,视图会加载拉取的数据,但
- (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;
}
或
以防无法解决问题 如果您的表被重新加载,您可能会丢失视图,我的意思是,它们被释放。如果在某个位置存在一些连接,则会导致崩溃。您需要在解除分配之前停止观察值,以避免崩溃。检查一下这个场景。这对我很有效。 问题在于将视图推到IIViewDeck控制器上时
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UINavigationController *centerController = [[UINavigationController alloc] initWithRootViewController:appDelegate.viewController];
[appDelegate.viewDeckController closeLeftViewBouncing:^(IIViewDeckController *controller)
{
appDelegate.viewDeckController.centerController = centerController;
}];
谢谢你们的意见 您是否在该类中注册了任何KVO,并且在对象解除分配之前删除了这些KVO?没有。我没有注册过任何KVO.iOS 9.1。相同的代码适用于iPad,但不适用于iPhone。我没有使用情节提要:。但根控制器的设置类似。
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
UINavigationController *centerController = [[UINavigationController alloc] initWithRootViewController:appDelegate.viewController];
[appDelegate.viewDeckController closeLeftViewBouncing:^(IIViewDeckController *controller)
{
appDelegate.viewDeckController.centerController = centerController;
}];