如果我告诉 fetchHTML 在单独的线程中被调用,它会更清楚吗?我还在调试控制台中看到了几条消息,例如:
_NSAutoreleaseNoPool():NSCFDictionary 类的对象 0xd92860 自动释放,没有适当的池 - 只是泄漏
_NSAutoreleaseNoPool():NSCFString 类的对象 0xd92800 自动释放,没有适当的池 - 只是泄漏
我是 iPhone 应用程序开发、Objective-C 的新手,但对编程或 C/C++ 并不陌生。我正在使用泄漏性能工具,它显示了许多泄漏。这是一个 10.5 kb 的泄漏,它发生在以下行:
NSString * xml = [NSString stringWithContentsOfURL:urlobj];
下面的堆栈跟踪是:
stringWithContentsOfURL
initWithContentsOfURL
initWithDataOfEncoding
...
有谁知道为什么这一定会发生。我的印象是我在这里得到了一个自动释放对象,我可以在不调用保留的情况下将它返回给调用者。我没有使用 xml 对象存储在实例变量中,只是为了处理。
这是功能代码:
- (NSString *) fetchHTML: (NSString* ) url{
@try
{
NSURL* urlobj = [NSURL URLWithString:url];
NSString * xml = [NSString stringWithContentsOfURL:urlobj];
return xml;
}
@catch( NSException *ex){
NSLog(@"Error fetchingHTML");
return nil;
}
return nil;
}