对于我正在处理的iOS应用程序,我目前正在编写一个单例类来处理对服务器的异步请求。以下是其中一种方法的示例 -
- (void)registerUser:(CBCUserRegistration *)userRegistration delegate:(id)<CBCUserRegistrationDelegate>delegate;
在此方法中,创建NSURLConnection并发送异步请求。此时,我需要一种方法将委托对象绑定到NSURLConnection,这样就可以了
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data;
被叫,我知道哪个代表要通知。由于请求是异步的,因此可能会随时发出多个请求。我的初始是使用NSMutableDictionary,将NSURLConnection设置为键,将委托设置为值,但是密钥被复制,因此不行。任何人都可以提出另一种方法来追踪这个吗?
提前致谢。
答案 0 :(得分:2)
避免使用NSDictionary。而是采取面向对象的方法:
编写一个实现所需MyConnection
回调的类NSURLConnectionDelegate
,并具有id<CBCUserRegistrationDelegate>
类型的属性/ ivar。向创建start
的{{1}}添加MyConnection
方法,为自己分配该连接的委托,然后启动它。现在,您可以为您执行的每个URL请求创建NSURLConnection
的实例。 MyConnection
持有MyConnection
并转发从CBCUserRegistrationDelegate
收到的结果。
然而,在这里使用委托有点过时了。请改用块,特别是如果您的项目使用ARC。 NSURLConnection
提供了一种执行异步请求的便捷方法:NSURLConnection
。
例如:
[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]
答案 1 :(得分:0)
使用设置为NSURLConnection地址的NSNumber作为键,然后您可以将另一个字典设置为键的对象。您可以给它命名等,记录要通知的对象等。只要记住在释放NSURLConnection时将其删除。