【问题标题】:NSURLConnection and XCode "Build and Analyze"NSURLConnection 和 XCode “构建和分析”
【发布时间】:2010-05-31 13:35:35
【问题描述】:

我一直在关注使用 NSURLConnection 的文档,并且正在使用委托来管理连接(在其他方法中覆盖连接:didFailWithError:connectionDidFinishLoading:)。为NSURLConnection 对象分配的内存在这些委托方法中释放。

我的问题是,从 XCode 菜单运行“构建/构建和分析”会在 NSURLConnection 类上调用 alloc 的方法中触发令人讨厌的“对象的潜在泄漏 (...)”警告(逻辑上足够我不会在同一个区块中释放它)。

有没有办法消除这个警告?

【问题讨论】:

  • 请显示发出警告的方法。

标签: iphone objective-c xcode


【解决方案1】:

将连接对象存储在保留的实例变量中的方法。然后,您可以在第一个方法结束时安全地释放它。

【讨论】:

  • 只是为了关闭这个,我将决定使用 ivar。同时,xcode 和 sdk 发生了很多事情,所以这可能不再是什么大问题了。
【解决方案2】:

当您单击分析器消息时,它会为您提供更多信息,显示执行路径等。这是否表明它只是愚蠢还是提示您可能有什么问题?

假设分析器只是愚蠢,如果消息打扰您,我会将引用保留在 ivar 中,然后从 -dealloc 中释放它。

在任何情况下,从委托方法中释放分配的资源对我来说都是一种巫术。我什至很想将所有处理 NSURLConnection 的代码移到它自己的类中。

【讨论】:

  • 不,除了我已经知道的以外,它没有告诉我更多信息:释放消息不是在分配对象的方法中发送,而是在委托中发送。这是由于连接是在委托方法中释放的,正如我参考的苹果文档中所解释的那样。将引用保存在 ivar 中可能是关闭消息的一种方式,你是对的,但我希望有另一种更清洁的方式来实现我的目标(正确的内存管理,没有警告)。
【解决方案3】:

我和 Florent 一起做这个。 NSURLConnection 上 Apple 的 documentation 中的“清单 1”将在“构建和分析”中标记“潜在泄漏”。然而,在方法的末尾放置一个 [theConnection release] 会崩溃。

希望有人为我对此发表评论!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-13
    • 1970-01-01
    • 2014-07-30
    • 2011-08-21
    • 2021-09-10
    • 2021-05-27
    • 1970-01-01
    相关资源
    最近更新 更多