很抱歉,如果之前有人问过这个问题,但我想知道 NSURLConnection
的最佳内存管理实践是什么。 Apple 的示例代码在一种方法中使用 -[NSURLConnection initWithRequest:delegate:]
,然后在 connection:didFailWithError:
或 connectionDidFinishLoading 中使用
,但这会发出一堆分析器警告,看起来有点危险(如果这两个方法都没有被调用怎么办?)。 release
:
我一直在自动释放(使用+[NSURLConnection connectionWithRequest:delegate:]
),这看起来更干净,但我想知道 - 在这种情况下,是否有可能>NSURLConnection
在连接关闭之前释放(例如,下载大文件时)?
最佳答案
这将返回自动释放的NSURLConnection
:
+[NSURLConnection connectionWithRequest:delegate:]
如果您想保留引用,则需要保留
它。完成后,释放
它。
它对已经autorelease
已经autorelease
d对象没有帮助。
我假设示例代码将在某处保留
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/