diff --git a/AFNetworking/AFImageRequestOperation.m b/AFNetworking/AFImageRequestOperation.m index cd6ce8e..f0c7b59 100644 --- a/AFNetworking/AFImageRequestOperation.m +++ b/AFNetworking/AFImageRequestOperation.m @@ -47,26 +47,28 @@ static inline CGSize kAFImageRequestRoundedCornerRadii(CGSize imageSize) { success:(void (^)(UIImage *image))success { return [self operationWithRequest:urlRequest completion:^(NSURLRequest *request, NSHTTPURLResponse *response, NSData *data, NSError *error) { - UIImage *image = nil; - if ([[UIScreen mainScreen] scale] == 2.0) { - CGImageRef imageRef = [[UIImage imageWithData:data] CGImage]; - image = [UIImage imageWithCGImage:imageRef scale:2.0 orientation:UIImageOrientationUp]; - } else { - image = [UIImage imageWithData:data]; - } - - if (!(CGSizeEqualToSize(image.size, imageSize) || CGSizeEqualToSize(imageSize, CGSizeZero))) { - image = [UIImage imageByScalingAndCroppingImage:image size:imageSize]; - } - if ((options & AFImageRequestRoundCorners)) { - image = [UIImage imageByRoundingCornersOfImage:image corners:UIRectCornerAllCorners cornerRadii:kAFImageRequestRoundedCornerRadii(image.size)]; - } - - if (success) { - success(image); - } - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { + UIImage *image = nil; + if ([[UIScreen mainScreen] scale] == 2.0) { + CGImageRef imageRef = [[UIImage imageWithData:data] CGImage]; + image = [UIImage imageWithCGImage:imageRef scale:2.0 orientation:UIImageOrientationUp]; + } else { + image = [UIImage imageWithData:data]; + } + + if (!(CGSizeEqualToSize(image.size, imageSize) || CGSizeEqualToSize(imageSize, CGSizeZero))) { + image = [UIImage imageByScalingAndCroppingImage:image size:imageSize]; + } + if ((options & AFImageRequestRoundCorners)) { + image = [UIImage imageByRoundingCornersOfImage:image corners:UIRectCornerAllCorners cornerRadii:kAFImageRequestRoundedCornerRadii(image.size)]; + } + + dispatch_sync(dispatch_get_main_queue(), ^(void) { + if (success) { + success(image); + } + }); + [[AFImageCache sharedImageCache] cacheImage:image forRequest:request imageSize:imageSize options:options]; }); }]; diff --git a/AFNetworking/AFJSONRequestOperation.m b/AFNetworking/AFJSONRequestOperation.m index f7c699c..66f195a 100644 --- a/AFNetworking/AFJSONRequestOperation.m +++ b/AFNetworking/AFJSONRequestOperation.m @@ -62,27 +62,31 @@ failure(error); } } else { - id JSON = nil; - - #if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_3 - if ([NSJSONSerialization class]) { - JSON = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; - } else { + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { + id JSON = nil; + +#if __IPHONE_OS_VERSION_MIN_REQUIRED > __IPHONE_4_3 + if ([NSJSONSerialization class]) { + JSON = [NSJSONSerialization JSONObjectWithData:data options:0 error:&error]; + } else { + JSON = [[JSONDecoder decoder] objectWithData:data error:&error]; + } +#else JSON = [[JSONDecoder decoder] objectWithData:data error:&error]; - } - #else - JSON = [[JSONDecoder decoder] objectWithData:data error:&error]; - #endif - - if (error) { - if (failure) { - failure(error); - } - } else { - if (success) { - success(JSON); - } - } +#endif + + dispatch_sync(dispatch_get_main_queue(), ^(void) { + if (error) { + if (failure) { + failure(error); + } + } else { + if (success) { + success(JSON); + } + } + }); + }); } }]; }