我从这里开始使用此菜单的情节提要。
一切正常,但我必须将UIViewController设置为inalize并使其崩溃,它将在下面显示异常
-[UIView release]: message sent to deallocated instance 0x1b343c30
我在谷歌和stackOverflow上搜索,但没有得到解决方案和更多信息
码
__typeof (self) __weak weakSelf = self;
REMenuItem *homeItem = [[REMenuItem alloc] initWithTitle:@"NEW" subtitle:@"Return to Home Screen" image:[UIImage imageNamed:@"Icon_Home"] highlightedImage:nil action:^(REMenuItem *item) {
NSLog(@"Item: %@", item);
MasterViewController *controller = [[MasterViewController alloc]init];
[weakSelf.navigationController pushViewController:controller animated:YES];
}];
为什么会发生怎么解决这个
最佳答案
从所发布的代码中无法确定(如果使用ARC则没有说过,使用僵尸时未显示调用堆栈),但是如果所有菜单操作都像这样,那么您将在构建导航控制器上的大量视图控制器堆栈,这将导致大量内存使用。根据您代码的其余部分,这可能导致某些视图被释放,然后在其他地方释放。
您的菜单操作代码可能应该将相关的视图控制器安装为导航堆栈的根视图控制器,而不是简单地将其推入。
为了帮助追踪有问题的对象以及它的创建位置,您可以使用僵尸工具。当应用崩溃时,打开右侧的详细信息检查器,它将告诉您视图是什么,创建视图的方法等等。当跟踪这些错误时,这是一个很大的帮助。