다음 코드는 인터넷을 통해 데이터를 가져올 수 유효 :AFNetworking 2.0 라이브러리를 동 기적으로 사용하는 방법은 무엇입니까? AFNetworking 2.0을 사용
NSString *URLPath = @"http://www.raywenderlich.com/downloads/weather_sample/weather.php?format=json";
NSDictionary *parameters = nil;
[[AFHTTPRequestOperationManager manager] GET:URLPath parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"failure: %@", error);
}];
하지만 단위 테스트에 동 기적으로 이러한 요청을 테스트 할 수 있습니다.
// This code would be blocked.
dispatch_semaphore_t sema = dispatch_semaphore_create(0);
NSString *URLPath = @"http://www.raywenderlich.com/downloads/weather_sample/weather.php?format=json";
NSDictionary *parameters = nil;
[[AFHTTPRequestOperationManager manager] GET:URLPath parameters:parameters success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"success: %@", responseObject);
dispatch_semaphore_signal(sema);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"failure: %@", error);
dispatch_semaphore_signal(sema);
}];
dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);
dispatch_release_ARC_compatible(sema);
어떻게 동기 AFNetworking 2.0 라이브러리를 사용하여 데이터를 가져올 수 있습니다 (Kiwi에서 그 코드를 테스트) :이 같은 GCD 세마포어를 사용하는 경우 그러나 그것은 차단 될 것인가?
왜 당신은 사용할 수 없습니다 세마포어? –
먼저, 테스트중인 코드를 생각해보십시오. 실제로 AFNetworking의 단위 테스트를 작성하고 싶습니까? 그들은 이미 자신의 것을 가지고 있습니다. 그렇다면 이걸 가지고 무엇을 시험하려고합니까? –
다른 웹 API를 테스트하고 싶습니다. –