從最開始什麼都不懂的小白,到到現在略知一二的小孩。我覺得不僅僅是我,大家應該都會註意到代理幾乎貫穿著IOS,那麼問題來了,我接下來要說什麼呢,那就是。標題的內容啦。上篇網路系列的文章我介紹了NSURLSession,趁熱打鐵,這篇就介紹一下NSURLSession代理的實現。 NSURLSessio
從最開始什麼都不懂的小白,到到現在略知一二的小孩。我覺得不僅僅是我,大家應該都會註意到代理幾乎貫穿著IOS,那麼問題來了,我接下來要說什麼呢,那就是。標題的內容啦。上篇網路系列的文章我介紹了NSURLSession,趁熱打鐵,這篇就介紹一下NSURLSession代理的實現。
NSURLSession這塊其實並不難,但是有人會說有點亂,大家不要擔心,不容易實現的api總會有大牛實現三方的,稍後我會為大家獻上“微不足道”的三方。
*關於NSURLSession我想再寫一篇到兩篇,雖然實際開發中有可能用不到,但是原生的我們還是知道比較好,過於依賴三方,大神也會成為小白*
言歸正轉,代碼中現本事:
// // ViewController.m // CX-NSURLSession代理簡介 // // Created by ma c on 16/3/21. // Copyright © 2016年 xubaoaichiyu. All rights reserved. // #import "ViewController.h" @interface ViewController ()<NSURLSessionDataDelegate> @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; } //這是為了測試而建立的點擊屏幕事件。 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{ //代理 測試 NSURL * url = [NSURL URLWithString:@"http://localhost/login.php?username=haha&password=123"]; //創建自定義Session NSURLSession * session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc]init]]; NSURLSessionTask * task = [session dataTaskWithURL:url]; //開啟任務 [task resume]; } #pragma mark - deleDate //接受到伺服器響應 -(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler { //__FUNCTION__ c語言字元串用s NSLog(@"%s",__FUNCTION__); //允許伺服器回傳數據 completionHandler(NSURLSessionResponseAllow); } //接受伺服器回傳的數據可能執行多次 -(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data{ NSLog(@"%@",[[NSString alloc]initWithData:data encoding:NSUTF8StringEncoding]); } //請求成功或者失敗 -(void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(NSError *)error{ NSLog(@"%@",error); } @end