Grand Central Dispatch
使用GCD,可以让你的程序不会停止响应.GCD是多线程里用起来最方便的,不需要太复杂的线程管理.
让你的程序保持响应的原则:
1. 不要柱塞主线程
2. 把工作一到其他线程中做。
3. 做完后更新主线程的UI.
没有GCD的代码:
- (void)addTweetWithMsg:(NSString*)msg url:(NSURL*)url {
// Controller UI callback on main thread
DTweet *tw = [[DTweet alloc] initWithMsg:msg];
[tweets addTweet:tw display:YES];
tw.img = [imageCache getImgFromURL:url];//bottle neck
[tweets updateTweet:tw display:YES];
[tw release];
}
有GCD的代码:
- (void)addTweetWithMsg:(NSString*)msg url:(NSURL*)url {
// Controller UI callback on main thread
DTweet *tw = [[DTweet alloc] initWithMsg:msg];
[tweets addTweet:tw display:YES];
dispatch_async(image_queue, ^{
tw.img = [imageCache getImgFromURL:url];
dispatch_async(main_queue, ^{
[tweets updateTweet:tw display:YES];
});
});
[tw release];
}
时间: 2024-10-13 21:52:49