IOS:同步请求和异步请求
来源:互联网 发布:淘宝无线端装有白边 编辑:程序博客网 时间:2024/05/17 18:01
1、同步请求和异步请求
同步请求可以从因特网请求数据,一旦发送同步请求,程序将停止用户交互,直至服务器返回数据完成,才可以进行下一步操作,
异步请求不会阻塞主线程,而会建立一个新的线程来操作,用户发出异步请求后,依然可以对UI进行操作,程序可以继续运行。
2、代码实现
创建一个空项目,在AppDelegate.h中遵守协议,并声明一个属性来存储数据。
@interface AppDelegate :UIResponder <UIApplicationDelegate,NSURLConnectionDataDelegate>
@property (strong,nonatomic)UIWindow *window;
@property(retain,nonatomic)NSMutableData *pData;
@end
在AppDelegate.m
首先声明一个宏定义,
#define URL @"http//www.baidu.com"
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindowalloc]initWithFrame:[[UIScreenmainScreen]bounds]]autorelease];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColorwhiteColor];
//同步请求
//创建URL
//NSURL *pUrl = [NSURL URLWithString:URL];
//创建一个请求
/*NSURLRequest *pRequ = [NSURLRequest requestWithURL:pUrl cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:60];
//建立连接
NSError *pError = nil;
NSURLResponse *pRespond = nil;
//向服务器发起请求,(线程会一直等待服务器响应,直到超出60秒,)
NSData *pData = [NSURLConnection sendSynchronousRequest:pRequ returningResponse:&pRespond error:&pError];
NSLog(@"pData = %@",pData);
NSLog(@"pError = %@",[pError localizedDescription]);*/
//异步请求
//获取网络资源路径
NSURL *pURL = [NSURLURLWithString:URL];
//根据URL创建请求
//NSURLRequest初始化方法第一个参数:请求访问路径,第二个参数:缓存协议,第三个参数:网络请求超时时间(秒)
NSURLRequest *pRequest = [NSURLRequestrequestWithURL:pURLcachePolicy:NSURLRequestUseProtocolCachePolicytimeoutInterval:60];
//发起请求,通过委托模式回调完成数据获取
[NSURLConnectionconnectionWithRequest:pRequestdelegate:self];
[self.windowmakeKeyAndVisible];
return YES;
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response
{
NSLog(@"服务器接收响应");
//初始化
self.pData = [NSMutableDatadataWithCapacity:5000];
}
//服务器返回数据,客户端开始接受
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data
{
NSLog(@"开始接受数据");
//将数据放入缓存区
[self.pDataappendData:data];
}
//数据接收完毕调用的方法
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSLog(@"数据接收完毕");
NSLog(@"pData = %@",self.pData);
}
//数据接收失败时调用的方法
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
{
NSLog(@"数据接收失败,原因:%@",[errorlocalizedDescription]);
}
同时不要忘了释放pData啊。
- (void)dealloc
{
[_pDatarelease];
[_windowrelease];
[superdealloc];
}
- IOS 同步请求和异步请求
- IOS:同步请求和异步请求
- iOS 同步请求和异步请求
- 异步请求和同步请求
- 同步请求和异步请求
- 同步请求和异步请求
- 同步请求和异步请求
- 同步和异步请求
- IOS同步请求和异步请求的区别
- iOS同步请求和异步请求的区别
- IOS同步请求和异步请求的区别
- ios中的ASIHTTPRequest的同步请求和异步请求
- IOS同步请求和异步请求的区别
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- IOS之同步请求、异步请求、GET请求、POST请求
- PHP之APC缓存
- Nginx配置文件详细说明
- 今天注册了CSDN。
- 网址收藏
- Ubuntu 12.04安装Google Chrome
- IOS:同步请求和异步请求
- 系统学习jQuery.核心知识.局部.jQuery选择器.层次选择器
- 排序算法(四):插入排序
- FreeBSD安装各种字体
- 360浏览器下禁止自动填写用户名密码
- 关于浏览器的两则旧闻
- Get中文乱码IE浏览器Get中文乱码解决方案
- 图像放缩之双立方插值
- 基于 Apache Mahout 实现高效的协同过滤推荐