1

首先...我是意大利人,所以我很抱歉我的英语不好!导航控制器和酒吧 - 内存管理

所以......这是我的应用程序: 我使用的是导航控制器:在第一视图中有10个按钮,每个按钮调用这样的功能:

[self pushViewController:nameview animated:YES]; 

到不同的UIViewController !所以我有11个uiviewcontroller! 每个控制器decleared喜欢这里

@interface ... 
IBoutlet UIViewController *viewcontroller; 
... 
@property (nonatomic, retain) IBOutlet UIViewController *viewcontroller; 

最后我不得不说,我与IB合作!

我的问题是,我的应用程序不释放内存! 当我在视图中,然后点击“backbuttonitem”(由IB创建,而不是由我创建),最后一个视图不会被释放(再次,为我的坏英语感到抱歉)...并且如果用户看到所有10个视图,该应用程序收到警告按摩(低内存)!

如何释放popviewcontroller操作前的最后一个视图锯?

感谢:d

回答

1

当你推一个视图控制器到你需要释放它作为导航控制器现在拥有它导航控制器。当您使用popViewControllerAnimated:导航控制器将确保视图控制器从内存中释放的护理

UIViewController *controller = [[UIViewController] initWithNibName:@"Nib" bundle:nil]; 
[self pushViewController:controller animated:YES]; 
[controller release]; 

然后:例如,你会做以下。

+0

抱歉,但我是一个真正的新手:P 所以......我的导航控制器为“X”,我在视图中的“A”,我想在视图“B” 推我已经试过这个: UIViewController * B = [[UIViewController] initWithNibName:@“Nib”bundle:nil]; [self pushViewController:B animated:YES]; [B版]; 但xcode告诉我“预期:之前]令牌”O_O 哪里出错? – JAA 2010-06-20 09:18:21

+0

我不明白为什么我必须这样做 UIViewController * controller = [[UIViewController] initWithNibName:@“Nib”bundle:nil]; 因为我用IB来创建uiviewcontroller ... – JAA 2010-06-20 12:47:40

+0

如果不立即显示,您不应该使用IB创建视图控制器。您真的应该只在需要显示时创建控制器。 – rickharrison 2010-06-20 14:11:51