【问题标题】:"of class NSURL autoreleased with no pool in place - just leaking" Help“类 NSURL 自动释放,没有适当的池 - 只是泄漏”帮助
【发布时间】:2011-07-21 19:35:09
【问题描述】:
-(void)setIT:(customOfferCell *)curr {
    NSAutoreleasePool *imagePool = [ [ NSAutoreleasePool alloc ] init ];

    NSURL *url = [[NSURL URLWithString:imageURL]autorelease];
    NSData *imageData = [[NSData dataWithContentsOfURL:url] autorelease];
    curr.offerImage.image = [[UIImage imageWithData:imageData]autorelease];
    [imagePool drain];
}

您好,我遇到了标题错误并且程序运行良好,但是泄漏的数量与我有关,我调查了导致它的原因,因为此方法是在新线程上调用的:

[NSThread detachNewThreadSelector: @selector(setIT:) toTarget:self withObject:cell];

我需要创建一个自动释放池并自动释放对象。调用上述方法将图像加载到我的自定义 UITableViewCell 上。当我运行它时,我会在甚至没有运行的委托上遇到奇怪的错误。有人可以帮忙吗?

谢谢!

【问题讨论】:

    标签: iphone objective-c xcode4 autorelease


    【解决方案1】:

    您正在使用返回自动释放值的工厂方法创建对象,然后自动释放它们!不过,这应该会导致过度发布问题,而不是泄漏。

    【讨论】:

    • 谢谢,一旦我删除了应用程序运行完美的代码,但控制台显示:__NSAutoreleaseNoPool():对象 0x5a90570 of class NSURL autoreleased with no pool in place - just leaking 2011-07-21 20: 47:33.026 CorkSSG[276:13c07] *** __NSAutoreleaseNoPool(): NSCFString 类的对象 0xfde660 自动释放,没有适当的池 - 只是泄漏 2011-07-21 20:47:33.028 CorkSSG[276:13c07] ***
    • @richard 你删除了什么代码?您应该删除的唯一代码是对autorelease 的显式调用。
    • 哦,我也删除了 NSAutoReleasePool,我现在重新添加了它,它现在似乎运行正常!
    • -URLWithString: 之类的方法返回自动释放值,因此您需要一个适当的池。您可能应该阅读内存管理指南。
    • 谢谢理查德,我现在明白了!感谢您的快速回复
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多