0

假设我有某种静态类,我的意思是我的静态库的 .h 类,其中包含所有静态函数。一些函数对 Web 服务进行异步请求,并将 NSMutableURLRequest 与 initWithRequest:request 一起使用。因为我想监视来自服务器的数据,所以我创建了一个实现所有 NSURLConnectionDelegate 连接协议的委托,即接受、附加、完成并将其传递给请求。

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

谢谢

4

2 回答 2

2

您可以在将委托分配给 NSURLConnection 后立即释放它。从文档中

在下载期间,连接保持对委托的强引用。当连接完成加载、失败或被取消时,它会释放该强引用。

这是对象仅持有对其委托的弱引用的一般规则的一个例外。

于 2012-08-05T11:10:28.633 回答
0

释放委托不是正常的做法,因为对象保留委托是不正常的。委托通常用weak( __unsafe_unretained) 属性引用,因此当对象被释放时引用会被安全地破坏。

于 2012-08-05T08:57:37.883 回答