原帖:http://blog.csdn.net/favormm/article/details/6453260
@interface UIImageView (DispatchLoad)
- (void) setImageFromUrl:(NSString*)urlString;
- (void) setImageFromUrl:(NSString*)urlString
completion:(void (^)(void))completion;
@end
#import "UIImageView+DispatchLoad.h"
@implementation UIImageView (DispatchLoad)
- (void) setImageFromUrl:(NSString*)urlString {
[self setImageFromUrl:urlString completion:NULL];
}
- (void) setImageFromUrl:(NSString*)urlString
completion:(void (^)(void))completion {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
NSLog(@"Starting: %@", urlString);
UIImage *avatarImage = nil;
NSURL *url = [NSURL URLWithString:urlString];
NSData *responseData = [NSData dataWithContentsOfURL:url];
avatarImage = [UIImage imageWithData:responseData];
NSLog(@"Finishing: %@", urlString);
if (avatarImage) {
dispatch_async(dispatch_get_main_queue(), ^{
self.image = avatarImage;
});
dispatch_async(dispatch_get_main_queue(), completion);
}
else {
NSLog(@"-- impossible download: %@", urlString);
}
});
}
@end
分享到:
相关推荐
在iOS和macOS开发中,Grand Central Dispatch (GCD) 是一种强大的并行编程工具,由Apple提供,用于处理多核处理器和并发操作。本文将深入探讨GCD的基础概念、多线程以及如何通过Block来提高效率,这些都是从标题和...
标题“gcd多线程gcd-demo-master (1).zip”和描述“gcd多线程gcd_demo-master (1).zip”表明这是一个关于GCD多线程的示例项目或教程,可能包含了一些演示代码和实践案例。这个压缩包“gcd_demo-master”很可能是一个...
本资料主要探讨GCD的常用和不常用API,通过`GCD_Demo-master.zip`中的示例代码来深入理解这些API的用法。 一、GCD基础 1. **队列类型**:GCD提供了两种主要的队列类型,同步队列(Serial Queue)和并行队列...
在Android中,使用线程池或者协程(Coroutines)可以有效管理并发任务,iOS则有GCD(Grand Central Dispatch)来处理并发。 10. **权限管理**:在现代操作系统中,特别是Android 6.0+,应用程序需要获取相应的权限...
GCD(Grand Central Dispatch)是Apple提供的一种强大的多线程解决方案,适用于iOS和Mac OS X系统。本教程通过"GCDDemo"项目,将详细介绍如何利用GCD进行iOS多线程编程,并展示其与Block的结合使用,以提升代码的...
《Objective-C编程实践:myProject_OC_firm3u4_DEMO_优化》 在这个名为"myProject_OC_firm3u4_DEMO_优化"的项目中,开发者深度探索了Objective-C编程的一些关键技术和最佳实践,特别关注了多线程、runtime机制、Key...
本DEMO,"UI_TableView.zip_DEMO_便利构造器",主要关注如何使用便利构造器来简化UITableView的创建过程,并结合单例模式实现数据传递。我们将详细探讨这两个关键知识点。 首先,便利构造器(Convenience ...
通过`GCD_Demo-master`中的项目,你可以看到如何在实际应用中使用上述知识点,例如并发下载、任务调度、线程同步等。 总的来说,“swift-GCD使用大全”这个资源将带你深入了解GCD,不仅包含基本概念,还有高级用法...
综上所述,这个"show-view.zip_DEMO_iphone xml"实例涵盖了XML解析、多线程和页面旋转三大知识点。通过学习和研究这个DEMO,开发者可以深化对这些技术的理解,提升在iOS平台上构建高效、响应迅速的应用的能力。同时...
1. "GCD_Demo":展示了如何使用GCD创建并发和串行队列,以及如何在主队列上执行任务。 2. "NSThread_Demo":演示了如何创建和管理NSThread,以及如何在子线程中执行任务并返回结果到主线程。 3. "NSOperationQueue_...
标题"多线程GCD - Demo"表明我们将探讨如何使用GCD实现多线程编程,并通过一个示例进行讲解。 描述中提到“对应翻译文里的代码”,这意味着可能有一个教程或文章解释了如何在GCD中创建并行任务。由于“Gread!”...
这个“GCD操作demo”很可能是为了展示如何利用GCD来实现图片处理的并行和串行任务。 首先,让我们深入理解GCD的核心概念: 1. **队列(Queue)**:GCD提供了两种主要类型的队列:串行队列和并行队列。串行队列按照...
GCD详解Demo 同步异步任务,并行串行队列 同步和异步决定了要不要开启新的线程 同步:在当前线程中执行任务,不具备开启新线程的能力 异步:在新的线程中执行任务,具备开启新线程的能力 并发和串行决定了任务的...
多线程GCD各种用法,让你轻松掌握
3. **异步支持**:MBProgressHUD 支持异步操作,可以与GCD(Grand Central Dispatch)或NSThread等多线程技术配合使用,确保UI的流畅性。 4. **文本提示**:除了加载指示,还可以显示简短的文本消息,告知用户当前的...
GCD资源竞争Demo。注意,别运行imagegcd2.m,这是个反面教材。
Swift提供了GCD(Grand Central Dispatch)和Closures(闭包)来处理并发和异步任务。 9. **测试与调试**:项目中可能包含单元测试和集成测试,以确保代码的质量和功能的正确性。Xcode自带的测试工具可以帮助开发者...
在GCD demo线程中,可能会涉及创建任务,选择合适的工作队列,以及同步和异步调度等实践操作。通过编写和运行这样的示例,开发者可以更好地理解和掌握GCD的工作机制,提高自己在多线程编程领域的技能。
`dispatch_async`是GCD(Grand Central Dispatch)中的一个核心函数,用于在不同的执行队列上异步执行任务,以此实现多线程操作。GCD是苹果公司为解决多核处理器并行计算而引入的一个强大的底层技术,它简化了线程...
本篇文章将深入探讨GCD (Grand Central Dispatch)、NSThread和NSOperationQueue这三种主要的多线程实现方式,并通过具体示例进行详细解释。 **一、GCD(Grand Central Dispatch)** GCD是Apple开发的一种多线程...