代码之家  ›  专栏  ›  技术社区  ›  shosti

nsurlconnection的内存管理

  •  2
  • shosti  · 技术社区  · 14 年前

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

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

    1 回复  |  直到 14 年前
        1
  •  2
  •   stefanB    14 年前

    返回自动释放 NSURLConnection :

    +[NSURLConnection connectionWithRequest:delegate:]
    

    如果你想保留你需要的推荐信 retain 它。一旦你完成了,那么 release 它。 这对 autorelease 已经 自动释放 D对象。

    我假设示例代码将 保持 这个 NSURL连接 然后 释放 当连接失败时,如您的示例所示。

    这将返回必须处理的已分配对象

    -[NSURLConnection initWithRequest:delegate:]
    

    因为方法是命名的 init ,上面的另一个没有 初始化 以或的名义 copy 所以你不必担心内存管理。

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

    在你的 dealloc 你应该清理 NSURL连接 如果是的话 什么都不会发生,但如果它仍然被分配,它将清理它。

    apple doc about memory management -这很简单。