解决方案 »

  1.   

    HTTP协议一般情况下就是无连接的,所以是木有关系的。放心,NSURLConnection的创建绝对不会是程序性能的瓶颈,对于网络IO来说,这个对象的创建时间简直就是九牛一毛。另外,如果你实在不想重复创建,也可以使用NSURLConnection的类方法:    NSError* error = nil;
        NSHTTPURLResponse* response = nil;
        NSData* data= [NSURLConnection sendSynchronousRequest:request
                                        returningResponse:&response
                                                    error:&error];但这种方法是同步的,会阻塞当前线程,所以建议配合GCD使用
      

  2.   

    当然,你也可以使用另一个类方法:+ (void)sendAsynchronousRequest:(NSURLRequest*) request
                              queue:(NSOperationQueue*) queue
                  completionHandler:(void (^)(NSURLResponse* response, NSData* data, NSError* connectionError));
    但是必须提供NSOperationQueue和回调block,这反而带来了更多的复杂度,请按实际情况选用
      

  3.   

    感谢!还有  [urlConnection start]; 这个需不需要写上呢?我看有的程序没写有的又写了..
      

  4.   

    类方法里是不需要的,start是实例方法,具体可以查苹果的官方文档或者示范代码
      

  5.   

    嗯,还有个问题就是      一个程序中有多个请求,但是只有一个回调 didReceiveData,有什么好办法可以区分回调得到的请求呢?
      

  6.   

    可以选择用使用关联对象,具体查询
    objc_setAssociatedObject
    objc_getAssociatedObject
    这两个方法的使用
      

  7.   

    1. 我一般用ASI-HTTP-REQUEST这个第三方库异步请求
    2. 这个库调用异步请求时候,可以放一个叫做userInfo的NSDictionary实例,里面随便你放什么键-值对。在request反馈时候,同样去考察这个userInfo里面的key-value,就能区分到底是哪一次的请求了