【问题标题】:NSURLConnection and NSData leaking memoryNSURLConnection 和 NSData 泄漏内存
【发布时间】:2010-10-08 14:10:35
【问题描述】:

所以我想知道这是否是使用 NSData 存储连接响应数据泄漏内存的常见问题。例如,我有这行来初始化我的数据对象

davData = [[NSMutableData data] retain];

然后当连接错误或完成加载时,我释放它。据我了解,这不应该是泄漏吗?出于某种原因,即使在我发布数据之后,这些数据仍会显示在仪器中。知道是什么原因造成的吗?谢谢!

【问题讨论】:

    标签: iphone objective-c xcode ipad ios4


    【解决方案1】:

    尝试像这样初始化它:

    davData = [[NSMutableData alloc] init];
    

    你这样做的方式并没有真正造成泄漏,但它取决于你的对象被系统自动释放,这可能就是你仍然看到它的原因。

    【讨论】:

    • 唯一的问题是它在稍后尝试附加数据时崩溃。我认为它会在此之前的某个时间从池中自动释放......我现在遇到的相反问题。
    • 苹果文档说这也应该保留。我只是不确定如何正确释放它,所以它不会留下来。我怀疑在连接完成加载时使用该数据初始化 XML 解析器时会发生这种情况...
    • 只要你alloc它就不会被自动释放,你可以尝试在xml解析完成后释放它。
    • 好的,我现在明白了。好吧,我已将其隔离到这一行: [davData appendData:data];我在收到数据时这样做。那就是没有被释放的对象。
    • 它在实际调用 dealloc 方法时几乎取决于系统,所以如果您在 XML 解析器完成后释放它并且它仍然显示在仪器中,那么您无能为力。假设它的引用计数为零,它将在运行循环中的某个点被释放。
    猜你喜欢
    • 2014-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 2011-09-07
    相关资源
    最近更新 更多