假设我有一些静态类,我的意思是.h类用于我的静态库以及所有静态函数。一些函数对Web服务执行异步请求,并使用带有initWithRequest:request的NSMutableURLRequest。由于我想监视来自服务器的数据,我创建了一个委托,它实现了所有NSURLConnectionDelegate连接协议,即接受,追加,完成并将其传递给请求。
问题是因为我的.h类中有所有静态方法,并且我没有NSURLConnectionDelegate委托作为成员(因为类是静态的),我在哪里释放我的连接委托?主要问题是在connectionDidFinishLoading委托方法中对NSURLConnectionDelegate进行自我发布是一种常见做法吗?
感谢
答案 0 :(得分:2)
您可以在将代理分配给NSURLConnection后立即释放该代理。来自the documentation:
在下载过程中,连接会保留对委托的强引用。当连接完成加载,失败或被取消时,它会释放强引用。
这是一般规则的一个例外,即对象只包含对其委托的弱引用。
答案 1 :(得分:0)
释放委托是不正常的做法,因为对象保留委托是不正常的。代理通常使用weak
(__unsafe_unretained
)属性引用,因此在释放对象时安全地会破坏引用。