【发布时间】:2013-02-20 16:31:19
【问题描述】:
我找不到问题出在哪里,但是这段代码崩溃了。我是否过度释放任何对象?
settings = [[SettingsViewController alloc] initWithNibName:@"SettingsController" bundle:nil];
settings.hidesBottomBarWhenPushed = YES;
NSArray * arrayWithRootController = [[NSArray alloc] initWithObjects:settings, nil];
[(UINavigationController*)([self.tabBar.viewControllers lastObject])setViewControllers:arrayWithRootController];
[arrayWithRootController release];
[settings release];
如果我删除该行
[settings release];
应用程序不会崩溃。但我很确定它是正确的。问题可能出在其他地方吗?
有什么想法吗?非常感谢
【问题讨论】:
-
您能发布崩溃的详细信息吗?该错误将非常有用。
-
@user1394965 你错了! iOS6 在内存管理方面没有任何改变。我相信你已经把它和自动引用计数混为一谈了。 (顺便说一句,iOS4/5 也可以使用!)
-
如果 UINavigationController 保留其视图控制器,则此代码看起来正确。你可以通过使用 NSArray 工厂方法
-arrayWithObject:来简化一些事情,因为结果是自动释放。 -
viewControllers 是根据 Apple 定义为副本的属性
-
是否有充分的理由折磨自己,或者您只是想了解前 ARC 时代?
标签: ios cocoa-touch release