【发布时间】:2011-04-26 14:15:55
【问题描述】:
仪器泄漏说此代码泄漏:
NSString *name = [file substringToIndex:i];
Layer *actualLayer = nil;
for (Layer *lay in layers) {
if ([lay.layerName isEqual:name]) {
actualLayer = lay;
}
}
name 是泄漏对象。有一些奇怪的事情:它只是有时泄漏,并不总是(这个sn-p代码在我的应用程序正常执行期间执行了数百次,但它只泄漏了3-4次)。另一个奇怪的事情是,我认为 name 对象是一个自动释放对象,它从来没有明确地保留或释放,那么它怎么可能泄露了?
看堆栈,substringWithRange是由substringToIndex调用的,所以我认为是substringToIndex方法的问题。
【问题讨论】:
-
这段代码看起来确实不错。请记住,并非所有活着的东西实际上都在泄漏。也许给静态分析器一个机会!
标签: iphone memory substring memory-leaks autorelease