在我最近的项目中,我使用了 presentviewController 来组织视图的切换。但是有一个奇怪的问题。
首先我在 git hub 上写了一个 demo:test present view。希望它会使问题更容易理解。
其次,我展示了我在演示中所做的事情: 1) 根视图控制器是 T1RootViewController,它有一个属性:
@property (strong, nonatomic) T1TopViewController1 *top1VC;
加载时,它将 T1TopViewController1 添加为其唯一的子视图:
self.top1VC = [[T1TopViewController1 alloc] initWithNibName:@"T1TopView1" bundle:nil];
[self.view addSubview:self.top1VC.view];
2) T1TopViewController1 有一个属性:
@property (strong, nonatomic) T1TopViewController2 *topVC2;
它还有一个按钮,按下时会显示 T1TopViewController2:
self.topVC2 = [[T1TopViewController2 alloc] initWithNibName:@"T1TopView2" bundle:nil];
[self presentViewController:self.topVC2 animated:NO completion:nil];
3) T1TopViewController2 和 T1TopViewController1 几乎一样,只是它呈现的是 T1TopViewController3
4) T1TopViewController3 有一个按钮,按下时会返回显示 T1TopViewController1:
UIWindow *rootWin = [[UIApplication sharedApplication] keyWindow];
T1RootViewController *rootVC = (T1RootViewController *)rootWin.rootViewController;
[rootVC.top1VC dismissViewControllerAnimated:NO completion:nil];
然后运行这个应用程序,从 T1TopViewController1,单击每个视图上的按钮,直到出现 T1TopViewController3。然后单击 T1TopViewController3 按钮,这将返回到 T1TopViewController1。然后再次单击 T1TopViewController1 上的按钮。现在可能会出现问题:
1)在 ios 5 模拟器上,一切都很好
2)在 ios 6.1 模拟器或设备上,它会崩溃,并显示日志:
test[699:c07] * -[T1TopViewController2 isKindOfClass:]: message sent到释放的实例 0x75ade30
我真的不知道我的代码有什么问题,以及如何修复它。我会非常感谢任何帮助。
ps 开发环境是mac os x 10.8.4,xcode 4.6.3。该项目启用了 ARC。