重新分配窗口根视图控制器

时间:2014-01-02 02:41:11

标签: ios iphone objective-c xcode

在我的其中一个应用程序中,我需要重新分配rootview控制器,所以为此我做了如下所示,

   self.wndow.rootViewController = nil;
   self.window.rootVIewController = navigationController;

但是现在问题是以前使用的类对象没有从内存中释放,保留计数的生命对象继续增加,而我重新分配新的窗口rootVIewController,并且没有调用该类的dealloc方法,我用xcode检查了保留计数个人资料工具..,任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:0)

如果使用ARC,则在启用nszobie对象时不会调用dealloc方法。所以禁用它们。

转到product>edit schems> unchek the enable zombie

要检查保留计数,请使用此代码并验证

CFIndex rc = CFGetRetainCount((__bridge CFTypeRef)self.wndow.rootViewController);

答案 1 :(得分:0)

如何初始化窗口然后分配根视图控制器。我在之前的应用程序中做了这个,没有任何问题。

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];

答案 2 :(得分:0)

如果我可以避免它,我不会重新分配rootViewController,我会创建自己的简单UIViewController子类来充当容器ViewController,然后让它执行子viewControllers之间的切换有方法可以帮助你做到这一点。或者,您可以使用UITabBarController并隐藏选项卡栏。