iOS開発-NSURLConnectionエージェント設定の注意点
3312 ワード
1.メインスレッドでネットワーク要求を開始し、「NSURLConnection connection WithRequest:request delegate:self」を使用してプロキシ方法を設定し、プロキシ方法はデフォルトではメインスレッドで呼び出される。
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/login?username=123&pwd=123&type=JSON"]];
//
// :
NSURLConnection *connect = [NSURLConnection connectionWithRequest:request delegate:self];
//
//[NSOperationQueue alloc]init]]
//[NSOperationQueue mainQueue]
//
[connect setDelegateQueue:[[NSOperationQueue alloc]init]];
//[connect setDelegateQueue:[NSOperationQueue mainQueue]];
NSLog(@"-------");
2.メインスレッドでネットワーク要求を開始し、[NSURLConnection alloc]init WithRequest:request delegate:self startImmeditely:NO]を使ってプロキシを設定し、プロキシ方法はデフォルトではメインスレッドで呼び出される。NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/login?username=123&pwd=123&type=JSON"]];
//
// :
NSURLConnection *connect = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:NO];
//
[connect setDelegateQueue:[[NSOperationQueue alloc]init]];
//
[connect start];
NSLog(@"-------");
3.開始ネットワーク要求は、サブスレッドで実行され、「NSURLConnection connection WithRequest:request delegate:self」を使用してプロキシ方法を設定し、プロキシ方法はデフォルトではサブスレッドで呼び出される。 dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/login?username=123&pwd=123&type=JSON"]];
//
// : !!
// connect source runloop ,
NSURLConnection *connect = [NSURLConnection connectionWithRequest:request delegate:self];
// , ,
[connect setDelegateQueue:[[NSOperationQueue alloc]init]];
//[[NSRunLoop currentRunLoop] runMode:UITrackingRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:1000]];
[[NSRunLoop currentRunLoop]run];
NSLog(@"---%@----",[NSThread currentThread]);
});
4.サブスレッドでネットワーク要求を開始し、[NSURLConnection alloc]init WithRequest:request delegate:self startImmeditely:NO]を使ってプロキシを設定するとともに、プロキシメソッドの実行するスレッド[connect set DelegateQue]を設定する必要がある。dispatch_async(dispatch_get_global_queue(0, 0), ^{
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://120.25.226.186:32812/login?username=123&pwd=123&type=JSON"]];
//
// :
NSURLConnection *connect = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:NO];
// , , , , ,
[connect setDelegateQueue:[NSOperationQueue mainQueue]];
//
// connect runloop , runloop
// : runloop , runloop
[connect start];
NSLog(@"---%@----",[NSThread currentThread]);
});