什么';Iphone中的ModalViewController和非ModalViewController有什么区别?

什么';Iphone中的ModalViewController和非ModalViewController有什么区别?,iphone,Iphone,两个控制器之间的外观差异 及 我试着在行尾放一个自动释放器。程序崩溃了 因此我想知道 [self presentModalViewController:game animated:YES]; 是否将引用计数增加1 [self dismissModalViewControllerAnimated:YES]; 是否将引用计数减少1?否,显示视图控制器仅会执行此操作,它会显示它。您应该在适当的时间调用retain和release。跟踪您的保留计数很重要。 [self dismissModalVie

两个控制器之间的外观差异

我试着在行尾放一个自动释放器。程序崩溃了

因此我想知道

[self presentModalViewController:game animated:YES];
是否将引用计数增加1

[self dismissModalViewControllerAnimated:YES];

是否将引用计数减少1?

否,显示视图控制器仅会执行此操作,它会显示它。您应该在适当的时间调用retain和release。跟踪您的保留计数很重要。
[self dismissModalViewControllerAnimated:YES];
请记住,在分配和初始化时,保留计数增加1。您必须稍后释放该对象


如果您仍然不确定,您需要阅读有关视图控制器和内存管理的Apple文档

显示控制器后,请正常释放控制器,确保释放控制器后不会向
游戏
发送消息<代码>presentModalViewController:已设置动画:增加其保留计数,因此您可以在不释放对象的情况下释放它,并且可以成功地将所有权传递给当前视图控制器

Game *game = [[Game alloc] initWithNibName:@"mygame" bundle:nil];
[self presentModalViewController:game animated:YES];

[game release];
然后,当涉及到撤销它时,您不应该保留或释放它,只需调用disclose方法即可

不必考虑retain count(无论您在什么情况下都不调用
retainCount
方法并根据返回的时间决定要写什么,该方法仅用于遗留用途)。只需将每个init/new/copy与一个release/autorelease匹配即可

(请参见上的清单6-1,以证明您应该发布它)


有效的
[游戏发布]抵消
init…
dismissModalViewController…
抵消
presentModalViewController…