首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iPhone - substringToIndex / substringFromIndex / substringWithRange内存泄漏

iPhone - substringToIndex / substringFromIndex / substringWithRange内存泄漏
EN

Stack Overflow用户
提问于 2010-10-17 21:58:28
回答 2查看 2.9K关注 0票数 0

Instruments leaks表示此代码泄漏:

代码语言:javascript
复制
NSString *name = [file substringToIndex:i];
Layer *actualLayer = nil;
for (Layer *lay in layers) {
    if ([lay.layerName isEqual:name]) {
        actualLayer = lay;
    }
}

名称是泄漏的对象。有一些奇怪的事情:它只是偶尔泄漏,并不总是(在我的应用程序正常执行期间,这段代码被执行了数百次,但它只泄漏了3-4次)。另一件奇怪的事情是,我假设name对象是一个自动释放的对象,它从来没有明确地保留或释放过,那么它怎么会泄漏呢?

看看堆栈,substringWithRange是由substringToIndex调用的,所以我认为问题出在substringToIndex方法中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-17 22:11:24

Leaks偶尔会报告误报。您发布的代码看起来没有问题,因此请检查周围的代码是否可能导致问题。特别是,使用Build & Analyze,它可以发现许多内存管理错误。如果你找不到问题,就有可能它不存在(在这个特殊的例子中,使用这个特殊的工具)。

Bill Bumgarner描述了另一种调试策略,using the heapshot instrument,它可以在泄漏失败的地方成功。

票数 1
EN

Stack Overflow用户

发布于 2010-10-17 22:31:08

虽然上面提供的代码显示没有泄漏,但如果泄漏表明此行发生了泄漏:

代码语言:javascript
复制
actualLayer = lay;

然后看看在actualLayer被分配、保留、复制等之前的任何地方。泄漏并不是一种神奇的“这里正是你需要修复的地方”。它更多的是“这是我发现你泄露的地方,记住,泄漏发生在这之前的某个时候。”

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

https://stackoverflow.com/questions/3953519

复制
相关文章

相似问题

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