2011-08-25 84 views
1

作为Objective-C的新手,我还没有完全掌握委托的概念。我环顾四周,但我无法理解所给出的答案,所以我用我自己的话问了这个问题。NSURLConnection和对象委托

我已经实施了DownloadDelegate与四个功能:

  • (无效)连接:(NSURLConnection的*)连接didReceiveResponse:(NSURLResponse *)响应{
  • (无效)连接:(NSURLConnection的*)连接didReceiveData:(NSData的*)数据{
  • (无效)连接:(NSURLConnection的*)连接didFailWithError:(NSError *)错误{
  • (无效)connectionDidFinishLoading:(NSURLConnection的*)连接{

问题是,我想发送和检索数据下载后。我以前能够这样做,当这些方法在我的appviewcontroller,但因为我想多次调用下载过程,我想我应该把它放到一个代表(这是真的吗?)

但我不不知道如何向代理发送和检索数据。 顺便说一下,我用苹果教程来首先建立NSURLConnection,它工作得很好。 Link

感谢您的帮助!

回答

2

也许你对代表是什么感到困惑。在你的情况下,NSURLConnection使用一个委托(你要声明的那个)来发送有关重要事件的信息,比如你上面提到的那些。实际的委托可以是视图控制器或其他模型类的一部分,或者在它自己的文件中,这并不重要。为了在NSURLConnection的的代表和实际收到的回调,您必须声明的协议在你的@implementation声明

@implementation DownloadDelegate : NSObject <NSURLConnectionDelegate> 

那么无论你开始你的连接,你需要设置自己为这个声明的委托

NSURLRequest *request = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:string]]; 
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];//here is where you are declaring yourself as the delegate 
[connection start]; 

希望这会有所帮助。

+0

是的,我确实对代表是什么感到困惑!感谢你的回答 – Crafti