NSURLConnection 异步请求能不能封装诚一个公用的类? 异步请求能不能封装诚一个公用的类?每个页面都要copy一下几个方法,感觉很麻烦, 但是如果封装诚一个公共的类,又如何通知请求的页面返回数据? //发送异步get请求 } – (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response //接收NSData数据 |
|
关于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中的回调方法,同时将值传过去 说的可能是太清楚,不知道你能不能理解 – – |
|
自己封装一个delegate,然后在delegate里面用NSInvocation传递不同的页面处理函数。
|
|
ASIHTTPRequest的异步请求也有三个方法。跟connection差不多。
|
|
我不赞同用的时候拷贝一下,我还是感觉写个父类比较好。用的时候可以继承这个类。写程序最好还是避免复制粘贴。维护起来可是灾难性的
|
|
“关于http请求建议使用ASIHTTPRequest”这句我只是提了一下asi,跟下面的类封装没有关系,我下面写的就是对NSURLConnection中的回调方法进行的封装,想要封装必须有个set,每次发送请求前加入set,回调传值结束后还要从set中删除 |
|
40分 |
感觉在这里说不明白,专门为这个问题写了篇博客
http://blog.csdn.net/volcan1987/article/details/6685195 |