티스토리 뷰
https://www.objc.io/issues/5-ios7/from-nsurlconnection-to-nsurlsession/
https://code.tutsplus.com/tutorials/networking-with-nsurlsession-part-1--mobile-21394
- (void)viewDidLoad { [super viewDidLoad]; NSURLSession *session = [NSURLSession sharedSession]; } - (void)viewDidLoad { [super viewDidLoad]; NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:@"https://itunes.apple.com/search?term=apple&media=software"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSLog(@"%@", json); }]; } - (void)viewDidLoad { [super viewDidLoad]; NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *dataTask = [session dataTaskWithURL:[NSURL URLWithString:@"https://itunes.apple.com/search?term=apple&media=software"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSLog(@"%@", json); }]; [dataTask resume]; } #import@interface MTViewController : UIViewController @property (weak, nonatomic) IBOutlet UIImageView *imageView; @property (weak, nonatomic) IBOutlet UIProgressView *progressView; @end - (void)viewDidLoad { [super viewDidLoad]; NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration]; NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration delegate:self delegateQueue:nil]; NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithURL:[NSURL URLWithString:@"http://cdn.tutsplus.com/mobile/uploads/2013/12/sample.jpg"]]; [downloadTask resume]; } #import "MTViewController.h" @interface MTViewController () @end - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location { NSData *data = [NSData dataWithContentsOfURL:location]; dispatch_async(dispatch_get_main_queue(), ^{ [self.progressView setHidden:YES]; [self.imageView setImage:[UIImage imageWithData:data]]; }); } - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes { } - (void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite { float progress = (double)totalBytesWritten / (double)totalBytesExpectedToWrite; dispatch_async(dispatch_get_main_queue(), ^{ [self.progressView setProgress:progress]; }); } /
http://demianturner.com/2016/08/synchronous-nsurlsession-in-obj-c/
#import "NSURLSession+DTAdditions.h" @implementation NSURLSession (DTAdditions) + (NSData *)requestSynchronousData:(NSURLRequest *)request { __block NSData *data = nil; dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); NSURLSession *session = [NSURLSession sharedSession]; NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData *taskData, NSURLResponse *response, NSError *error) { data = taskData; if (!data) { NSLog(@"%@", error); } dispatch_semaphore_signal(semaphore); }]; [dataTask resume]; dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER); return data; } + (NSData *)requestSynchronousDataWithURLString:(NSString *)requestString { NSURL *url = [NSURL URLWithString:requestString]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; return [self requestSynchronousData:request]; } + (NSDictionary *)requestSynchronousJSON:(NSURLRequest *)request { NSData *data = [self requestSynchronousData:request]; NSError *e = nil; NSDictionary *jsonData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&e]; return jsonData; } + (NSDictionary *)requestSynchronousJSONWithURLString:(NSString *)requestString { NSURL *url = [NSURL URLWithString:requestString]; NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:50]; theRequest.HTTPMethod = @"GET"; [theRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; return [self requestSynchronousJSON:theRequest]; } @end /
'Apple > Classes' 카테고리의 다른 글
NSDate Code Examples (0) | 2017.07.23 |
---|---|
UIAlertController Code Examples (0) | 2017.07.23 |
NSTimer Code Examples (0) | 2017.06.17 |
NSDictionary Code Examples (0) | 2017.06.12 |
NSMutableArray Code Examples (0) | 2017.06.11 |