iphone - NSURLConnection 的内存管理

标签 iphone objective-c cocoa nsurlconnection

很抱歉,如果之前有人问过这个问题,但我想知道 NSURLConnection 的最佳内存管理实践是什么。 Apple 的示例代码在一种方法中使用 -[NSURLConnection initWithRequest:delegate:],然后在 connection:didFailWithError:connectionDidFinishLoading 中使用 release :,但这会发出一堆分析器警告,看起来有点危险(如果这两个方法都没有被调用怎么办?)。

我一直在自动释放(使用+[NSURLConnection connectionWithRequest:delegate:]),这看起来更干净,但我想知道 - 在这种情况下,是否有可能>NSURLConnection 在连接关闭之前释放(例如,下载大文件时)?

最佳答案

这将返回自动释放的NSURLConnection:

+[NSURLConnection connectionWithRequest:delegate:]

如果您想保留引用,则需要保留它。完成后,释放它。 它对已经autorelease已经autoreleased对象没有帮助。

我假设示例代码将在某处保留 NSURLConnection,然后在连接失败时释放它,如示例所示。

这将返回您必须负责清理的已分配对象

-[NSURLConnection initWithRequest:delegate:]

因为该方法名为 init,所以上面的另一个方法的名称或 copy 中没有 init,因此您没有担心内存管理。

如果您的对象在某个时刻在内部创建了 NSURLConnection,然后在连接完成或失败时释放它,您应该将对 nsurlconnection 的引用重置为 nil

在你的dealloc中,你也应该清理NSURLConnection,如果它是nil,什么也不会发生,但如果它仍然被分配,它会清理干净。

参见apple doc about memory management - 这很简单。

关于iphone - NSURLConnection 的内存管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2490252/

相关文章:

iphone - 在服务器和 iOS 应用程序之间同步文件目录

iphone - 将地址强制转换为 (id) 有副作用吗???地址 0xbfffe8d0 是否特殊? (固定 : issue was with _NSCallStackArray)

objective-c - 覆盖核心数据字段

iOS - 自定义表格单元格不是 UITableView 的全宽

cocoa - 如何通过安全连接使用 NSURLRequest 和 NSURLConnection? (HTTPS)

xcode - 如何使用 AppleScriptObjC 获取 Spotify 应用程序的图像和轨道名称

macos - NSTableView -noteNumberOfRowsChanged 的​​ NSView 版本是什么?

iphone - 具有水效果的 UIView

iphone - 无法移动我的角色

ios - 在 UIScrollView 中调整多行 UILabel 的大小会中断滚动。为什么?