Iphone UIViewController保留计数问题
我正在用下面的代码创建一个新的UIViewControllerIphone UIViewController保留计数问题,iphone,objective-c,ios,Iphone,Objective C,Ios,我正在用下面的代码创建一个新的UIViewController GameViewController *temp = [[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil]; NSLog(@"retain count%d", [temp retainCount]); temp.backgroundMusic = backgroundMusic; self.gameView = temp; [tem
GameViewController *temp = [[GameViewController alloc] initWithNibName:@"GameViewController" bundle:nil];
NSLog(@"retain count%d", [temp retainCount]);
temp.backgroundMusic = backgroundMusic;
self.gameView = temp;
[temp release];
[self presentModalViewController:gameView animated:YES];
[gameView release];
但当我查看保留计数时,我的临时视图控制器返回4
这怎么可能??因为它是4,当我关闭视图控制器时,我无法将其从内存中删除,我的游戏正在进行。(我可以看到AI播放的效果)。“你不应该使用重新计数。”。下面是一个很好的描述,为什么不:
“您不应该使用重新计数
”。下面是一个很好的描述,为什么不:
我建议您不要使用retainCount,因为它通常会提供有关对象实际重新计数的错误信息
只需遵循适当的内存管理实践!!!!这真的很简单,只要遵循NARC原则,只释放包含以下单词的对象:New Alloc Retain Copy。毒品!:)
我强烈建议您使用仪器中的内存泄漏工具,该工具会告诉您哪些对象未释放,哪些对象已释放,您正在尝试访问。我建议您不要使用重新计数,因为它通常会提供有关对象实际重新计数的错误信息
只需遵循适当的内存管理实践!!!!这真的很简单,只要遵循NARC原则,只释放包含以下单词的对象:New Alloc Retain Copy。毒品!:)
我强烈建议您使用乐器中的内存泄漏工具,该工具会告诉您哪些对象未释放,哪些对象已释放,您正在尝试访问。在GameViewController中,您是否已将背景音乐作为
- (void)viewDidLoad{
//Other nils
self.backgroundMusic = nil;
}
- (void)dealloc{
//Other releases
[backgroundMusic release];
[super dealloc];
}
在GameViewController中,您是否发布了您的背景音乐
- (void)viewDidLoad{
//Other nils
self.backgroundMusic = nil;
}
- (void)dealloc{
//Other releases
[backgroundMusic release];
[super dealloc];
}
永远不要使用retainCount,它不会按您认为的方式工作
如果需要查看对象的保留、释放和自动释放发生在何处,请使用工具:
在仪器中运行,在分配中将“记录参考计数”设置为on(必须停止记录才能设置选项)。使选择器运行,停止录制,搜索ivar(datePickerView),向下钻取,您将能够看到所有保留、释放和自动释放发生的位置
永远不要使用retainCount,它不会按您认为的方式工作
如果需要查看对象的保留、释放和自动释放发生在何处,请使用工具:
在仪器中运行,在分配中将“记录参考计数”设置为on(必须停止记录才能设置选项)。使选择器运行,停止录制,搜索ivar(datePickerView),向下钻取,您将能够看到所有保留、释放和自动释放发生的位置
[gameView版本]应为self。gameView=nil;(取决于您是否已使用retain声明gameView属性)[gameView release]应为self.gameView=nil;(取决于您是否使用retain声明了gameView属性)我得到的是返回的retain计数不正确。那么你认为我的问题是什么??为什么在我关闭viewcontroller后,我可以在主菜单中听到角色的移动音乐??您应该在viewwilldiscover
方法中停止音乐。不要试图用retainCount
方法来解决这个问题。这不仅仅是音乐的问题。我的dealloc方法也不起作用,音乐播放意味着AI函数正在开始工作??告诉我,gameView属性是如何声明的。我得到的是返回的保留计数不正确。那么你认为我的问题是什么??为什么在我关闭viewcontroller后,我可以在主菜单中听到角色的移动音乐??您应该在viewwilldiscover
方法中停止音乐。不要试图用retainCount
方法来解决这个问题。这不仅仅是音乐的问题。我的dealloc方法也不起作用,音乐播放意味着AI功能正在开始工作??告诉我,你的gameView属性是如何声明的。最后,有人演示了如何使用分配工具跟踪保留计数!非常感谢。最后,有人演示了如何使用分配工具跟踪保留计数!谢谢大家!@B嗯,对不起,我把它留作参考。不过,现在更新了我的答案。@b嗯,很抱歉,我把它留作参考。不过,现在更新了我的答案。