如何创建一个包含它自己的委托的新文件,以便我可以创建一个ASIHTTPRequest以及它自己的异步结束,以及足够简单的事情,我只需要将[request setDelegate:self];
设置为[request setDelegate:AlternateDelegate];
之类的东西,并且只需在开始时添加一个include的文档来引用AlternateDelegate委托ASIHTTPRequest异步的另一个代表?
0
A
回答
1
我知道这个问题是旧的,但如果有人遇到它:
@Hankweb seemes在谈论使用请求作为自己的代表。这当然有一些情况。例如,我正在开发一个项目,该项目使用ASIHTTPRequest
从远程源获取JSON并将其导入到Core Data存储中。
此操作(字面上,ASIHTTPRequest
是NSOperation
的子类)几乎完全自包含;我在后台线程上使用流式JSON解析器将对象导入到NSManagedObjectContext
中进行自定义请求,该对象在保存时触发一条内部捕获的通知,并使用performSelectorOnMainThread:waitUntilDone:
传递到主线程的上下文。
我正在使用ASIHTTPRequest
的块支持来完成此操作;在我的自定义initWithURL:
方法中,我设置了相关回调(dataReceivedBlock
,completionBlock
,failureBlock
等)。不过,传统的委托模式(使用ASIHTTPRequestDelegate
协议)也应该可行。
一个问题:你应该确保请求不会自己保留太多时间,否则你最终会发生内存泄漏。当使用多线程时,这很容易错过,特别是在使用块时。相反的:
- (id)initWithURL:(NSURL *aURL) {
//...
[self setCompletionBlock:^{
[self doSomething];
}];
//...
return self;
}
引用块内self
时使用__weak
属性(或__block
如果使用ARC是不):
- (id)initWithURL:(NSURL *aURL) {
//...
__weak id blockSelf = self;
[self setCompletionBlock:^{
[blockSelf doSomething];
}];
//...
return self;
}
如果你不知道这是为什么重要的是,请务必阅读Apple's guide to blocks in Objective-C和ASIHTTPRequest block API documentation。
1
ASIHTTPRequest的委托只是一个标准的目标C对象。只需创建一个新类,包含它的标题,创建/获取对象并将委托设置为该对象。
你有没有试过这个,并遇到问题?如果是这样的问题是什么?
相关问题
- 1. 异步添加图像 - ASIHTTPRequest
- 2. ASIHTTPRequest异步更新uitableview
- 3. ASIHTTPRequest多个异步请求问题
- 4. 在另一个异步循环内的Javascript异步循环
- 5. 使用ASIHTTPRequest测试异步下载
- 6. ASIHTTPRequest异步下载没有取消
- 7. 异步更新wpf UI从另一个线程异步
- 8. 从另一个异步例程调用异步例程
- 9. ASIHTTPRequest同步
- 10. Nodejs表示异步回调重定向到另一个路由
- 11. 异步任务的片段1块另一个异步任务不同Fragment2
- 12. angular2 Observable:如何等异步结果并返回另一个异步方法
- 13. 自动将一个表与另一个表(列)同步
- 14. 将异步函数的完成链连接到另一个
- 15. Angular 2订阅订阅另一个异步函数的服务
- 16. 异步调用另一个lambda的aws lambda
- 17. 节点,迭代mysql行,使用异步库调用另一个mysql查询
- 18. 同步ASIHTTPRequest更新标示
- 19. 如何调用一个类的异步方法到c#中的另一个类?
- 20. 等待一个异步回调同步
- 21. 制作一个异步forEach()'
- 22. 替代异步void
- 23. 在ASIHttpRequest异步中读取http标头信息
- 24. 我应该如何在iOS中处理ASIHTTPRequest异步调用?
- 25. 数据被使用之前释放与ASIHTTPRequest异步模式
- 26. 使用ARC时ASIHTTPRequest异步请求会导致EXC_BAD_ACCESS
- 27. 引发另一个异常的异常
- 28. OpenX的异步代码
- 29. 我可以访问同一个类的另一个代表中的代表?
- 30. MYSQL通过一个表格步骤并更新另一个
我真的不明白你在问什么 - 你问如何创建一个新的目标C类? – JosephH 2010-08-19 09:41:16
只是想为文件创建另一个委托。 – 2010-08-19 16:00:33