我目前正在创建一本iPad书籍。不幸的是,由于这是我的第一个iPad项目,我正在以非常规的方式编写代码。
这是一本20页的书,我有20个XIB。在每个XIB上,我正在调用下一个XIB,但我担心的是当前的XIB没有被卸载并且仍在占用内存。当我在第10页左右时,应用程序将因didReceiveMemoryWarning
而崩溃。
我正在使用两种不同的方法切换视图(我不知道哪一种更适合我的目的):
#METHOD 1
-(IBAction)NextPage:(id)sender
{
nextPage = [[NextPage alloc] initWithNibName:@"NextPage" bundle:nil];
[self.view addSubview:nextPage.view];
[self presentModalViewController:nextPage animated:YES];
[self.view release]; // this was added to hopefully release the current view.
}
#METHOD 2
-(IBAction)NextPage:(id)sender
{
NextPage *nextpage = [[[NextPage alloc] init] autorelease];
[self presentModalViewController:nextpage animated:YES];
}
每个视图都有按钮和内容,但我想确保在每次调用时从内存中完全删除它们。
我使用dealloc
尝试删除视图,但是当我检查内存泄漏并在页面之间来回切换时,内存会爬升。
- (void)dealloc {
[view release]; // don't know which is which
[self.view release]; // is this correct?
[super dealloc];
}
任何帮助表示赞赏!提前致谢。
答案 0 :(得分:0)
如果以模态方式显示下一页(正如您所做的那样),则不会释放当前页面。而是将您的窗口rootViewController
设置为新页面。
答案 1 :(得分:0)
如果你只是在书中的页面之间切换,你可能不应该以模态呈现。相反,你可以换掉视图。
... transitionFromView:toView:duration:options:completion:方法 为新的视图换出整套视图。
另一种选择是在视图中使用图层。
http://www.raywenderlich.com/2502/introduction-to-calayers-tutorial
答案 2 :(得分:0)
UINavigationController可以更简单地处理这个问题。看一下文档。此外,从iOS5开始,现在有一个书籍类型viewController可以很好地为您服务。