AppDelegate.m
#import "AppDelegate.h"
#import "UIImageView+Download.h"
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.
self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
//使用GCD完成课堂实例1
// UIImageView *imgView = [[UIImageView alloc] initWithFrame:self.window.bounds];
// NSURL *url = [NSURL URLWithString:@"http://h.hiphotos.baidu.com/image/pic/item/10dfa9ec8a136327f5fb6544938fa0ec08fac7b7.jpg"];
// [imgView loadImgWithUrl:url];
//
// [self.window addSubview:imgView];
// [imgView release];
//演示GCD延迟调用
double delayInSeconds = 2.0;
CFAbsoluteTime first = CFAbsoluteTimeGetCurrent();
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
dispatch_after(popTime, dispatch_get_main_queue(), ^{
NSLog(@"dispatch_after:%lf",CFAbsoluteTimeGetCurrent() - first);
});
//dispatch_set_target_queue 使用
dispatch_queue_t serialQueue = dispatch_queue_create("com.wxhl.serial", NULL);
dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);
//把serialQueue的优先级设置成跟globalQueue一样
//第一个参数为需要变更优先级的queue,第二个参数就是参照Queue
dispatch_set_target_queue(serialQueue, globalQueue);
dispatch_release(serialQueue);
return YES;
}
@end
UIImageView + Download.h
@interface UIImageView (Download)
- (void)loadImgWithUrl:(NSURL *)url;
UIImageView + Download.m
- (void)loadImgWithUrl:(NSURL *)url
{
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [UIImage imageWithData:data];
dispatch_async(dispatch_get_main_queue(), ^{
self.image = img;
});
});
}