我是 Objective-c 的新手。我编写了几行代码来异步访问 Web 服务,然后处理结果。您能否解释一下当异步方法将委托(协议)作为参数时 ARC 是如何工作的?
例如,我通过NSURLConnection
在方法中使用本地来调用 Web 服务:
-(void) invokeSomeWebServiceMethod {
MyDelegate *const theDelegate = ...;
NSURL *const url = ...;
NSURLRequest *const request = ...;
[NSURLConnection connectionWithReuqest: request delegate:theDelegate];
}
我不确定这种方法是否有效,因为NSURLConnection
作为消息返回的隐式connectionWithRequest
应该被标记为清理,因为调用方法和委托都没有对它的引用。但它有效!
所以:
- 运行时如何知道不会过早地清除
NSURLConnection
正在工作的东西? - 列表项 收到消息后,我是否应该释放/关闭委托中的连接
connectionDidFinishLoading
? - 委托声明并作为消息的一部分
invokeSomeWebServiceMethod
传递是否更有意义?然后将创建的对象封装在委托中。self
connectionWithRequest
NSURLConnection
谢谢