目标c委托自我释放

时间:2012-08-05 08:48:26

标签: objective-c ios delegates static-methods nsurlconnectiondelegate

假设我有一些静态类,我的意思是.h类用于我的静态库以及所有静态函数。一些函数对Web服务执行异步请求,并使用带有initWithRequest:request的NSMutableURLRequest。由于我想监视来自服务器的数据,我创建了一个委托,它实现了所有NSURLConnectionDelegate连接协议,即接受,追加,完成并将其传递给请求。

问题是因为我的.h类中有所有静态方法,并且我没有NSURLConnectionDelegate委托作为成员(因为类是静态的),我在哪里释放我的连接委托?主要问题是在connectionDidFinishLoading委托方法中对NSURLConnectionDelegate进行自我发布是一种常见做法吗?

感谢

2 个答案:

答案 0 :(得分:2)

您可以在将代理分配给NSURLConnection后立即释放该代理。来自the documentation

  

在下载过程中,连接会保留对委托的强引用。当连接完成加载,失败或被取消时,它会释放强引用。

这是一般规则的一个例外,即对象只包含对其委托的弱引用。

答案 1 :(得分:0)

释放委托是不正常的做法,因为对象保留委托是不正常的。代理通常使用weak__unsafe_unretained)属性引用,因此在释放对象时安全地会破坏引用。