首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >看不见的内存泄漏...iOS 4

看不见的内存泄漏...iOS 4
EN

Stack Overflow用户
提问于 2011-10-19 04:06:55
回答 1查看 83关注 0票数 0

所以我的记忆有点问题。似乎我没有正确地释放或释放对象,因为我在游戏中得到了这种微妙的内存积累。

我像这样初始化所有的对象:

代码语言:javascript
复制
self = [super init];
if (self != nil) {
    //inititalize object
}

我像这样释放dealloc方法中的所有对象:

代码语言:javascript
复制
[object release], object = nil;

现在我觉得我应该提到我的游戏是在视图上运行的。我有一个主视图,它将子视图加载到一个名为'currentView‘的变量中。我像这样在视图之间切换。

代码语言:javascript
复制
if (currentView != nil) {
    [currentView dealloc];
}
currentView = [[newView alloc] initWithVariables:vars];

我想知道问题是与对象的初始化和释放有关,还是与视图有关。我还想知道我可以用来追踪仪器中没有出现的任何泄漏的任何策略。

我需要这个信息尽快,如果你能帮助它将不胜感激。谢谢。

编辑:当我通过仪器运行它时,它会显示我的应用程序使用的内存。它有一个奇怪的模式。当它加载第一个视图时,它以近似开始。使用了17mb。然后我切换到第二个视图,它上升到22mb。现在,如果我回到第一个视图,它不会再次下降到17mb,而是下降到大约20mb。现在,当我继续在两者之间切换时,它在22mb到20mb之间,并且几乎保持不变。这怎么解释呢?

EDIT2:在上面的编辑中解释的模式在整个游戏中是一致的。由于这种一致性,我注意到我的游戏中每一级都有70kb的漏洞。显然,当我的游戏保持在100mb以下时,这应该不会造成任何问题,所以除非他们长时间玩我的游戏,否则这不会成为问题。

尽管如此,我还是想知道怎样才能追踪到那个70kb的漏洞。

EN

回答 1

Stack Overflow用户

发布于 2011-10-19 04:10:06

您应该使用release而不是dealloc。每个对alloc的调用都应该与一个releaseautorelease相匹配;在您的示例中,使用release,因为您希望控制它何时被释放。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7813029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档