NSURLConnection 异步请求能不能封装诚一个公用的类?   异步请求能不能封装诚一个公用的类?每个页面都要copy一下几个方法,感觉很麻烦,但是如果封装诚一个公共的类,又如何通知请求的页面返回数据?//发送异步get请求
-(IBAction)BeginRequest:(NSString *)urlRequest
{
}- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
    [receivedData setLength:0];
}//接收NSData数据
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
    [receivedData appendData:data];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
    
}
//接收完毕,显示结果
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
    
    
    
}  

解决方案 »

  1.   

    关于http请求建议使用ASIHTTPRequest
    关于这个类的封装就比较麻烦了
    首先这个类需要有个set表,然后需要有个类似addDelegate这样的方法,这个方法主要是把当前类添加到这个类的set表中,然后在公用方法(如connectionDidFinishLoading)中,首先找到set表中的当前类,然后调用当前类的某个方法(该方法类似回调)
    假如该封装类为A,发送请求的类为B,首先B中需要生成A的对象,然后调用A的addDelegate:self,把B自己加到A中的set表,然后B发送请求(类似[[NSURLConnection alloc] initWithRequest:mRequest delegate:A startImmediately:YES];)一定注意要将connection的delegate置为A,假如1秒后异步请求相应了,此时会调用A中的回调函数(如connectionDidFinishLoading),然后在回调方法中首先找到set中的B,然后调用B中的回调方法,同时将值传过去
    说的可能是太清楚,不知道你能不能理解 - -
      

  2.   

    自己封装一个delegate,然后在delegate里面用NSInvocation传递不同的页面处理函数。
      

  3.   

    ASIHTTPRequest的异步请求也有三个方法。跟connection差不多。
      

  4.   

    “关于http请求建议使用ASIHTTPRequest”这句我只是提了一下asi,跟下面的类封装没有关系,我下面写的就是对NSURLConnection中的回调方法进行的封装,想要封装必须有个set,每次发送请求前加入set,回调传值结束后还要从set中删除
      

  5.   

    感觉在这里说不明白,专门为这个问题写了篇博客
    http://blog.csdn.net/volcan1987/article/details/6685195