[英]Invisible memory leaks… iOS 4
所以我的内存有问题。 似乎我没有适当地释放或释放对象,因为我在游戏中得到了微妙的内存积累。
我初始化所有这样的对象:
self = [super init];
if (self != nil) {
//inititalize object
}
我在dealloc方法中释放所有对象,如下所示:
[object release], object = nil;
现在我觉得我应该提到我的游戏是基于视图的。 我有将子视图加载到一个称为“ currentView”的变量中的主视图。 我这样切换视图。
if (currentView != nil) {
[currentView dealloc];
}
currentView = [[newView alloc] initWithVariables:vars];
我想知道问题出在我的对象的初始化和释放还是它的视图。 我还想知道可以用来追踪仪器中未出现的任何泄漏的任何策略。
我需要尽快提供此信息,如果您能提供帮助,我们将不胜感激。 谢谢。
编辑:当我通过仪器运行它显示我的应用程序使用的内存。 它有一个奇怪的模式。 当它加载第一个视图时,它从大约开始。 使用了17mb。 然后我切换到第二个视图,它上升到22mb。 现在,如果我回到第一个视图,它不会再下降到17mb,而是下降到大约20mb。 现在,当我继续在两者之间切换时,它会在22mb和20mb之间移动,并且几乎保持不变。 如何解释呢?
EDIT2:以上编辑中解释的模式在整个游戏中都是一致的。 由于这种一致性,我注意到我的游戏中每级泄漏70kb。 显然,当我的游戏保持在100mb以下时,这不会造成任何问题,因此,除非他们长时间玩我的游戏,否则这不是问题。
虽然,我仍然想知道如何找到70kb的泄漏。
您应该使用release
而不是dealloc
。 每次对alloc
调用都应与release
或autorelease
相匹配; 在您的情况下,请release
它,因为您想控制释放它的时间。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.