- 浏览: 123042 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
AFO:
sendJSON(Result.SUCCESS, respon ...
ajaxSubmit,json,struts2,提示保存“json返回值” -
zczjdyj123:
999999999999999999999999999
ajaxSubmit,json,struts2,提示保存“json返回值” -
zczjdyj123:
888888888888888888888888
ajaxSubmit,json,struts2,提示保存“json返回值” -
zczjdyj123:
777777777777777777777777777
ajaxSubmit,json,struts2,提示保存“json返回值” -
zczjdyj123:
555555555555555555555555
ajaxSubmit,json,struts2,提示保存“json返回值”
//网络资源
// from: http://blog.csdn.net/favormm/article/details/6453260
//***************************************************************************//
//功能
1. 预定义了大量的要下载的图片URL
2. 创建一个GCD queue并开始下载图片
3. 在动画出现消失的时候,同时显示图片
//代码
//************************************************************************//
坦福大学关于gcd的代码,这段代码逐步演示了如何修正错误,其中用到的既是串行队列
1。这个是原始代码
view plain
2。这个是采用gcdd的代码,里面有错误3处
view plain
3。第一个错误,UI更新只能在主线程中 Problem! UIKit calls can only happen in the main thread!
改正后如下:
view plain
4。第二个错误,NSManagedObjectContext并不是线程安全的,gcd中访问成员变量有危险
Problem! NSManagedObjectContext is not thread safe,
so we can’t call photo.URL in downloadQueue’s t
改正后如下:
view plain
5。第三个错误,队列创建后没有释放,内存泄露
view plain
// from: http://blog.csdn.net/favormm/article/details/6453260
//***************************************************************************//
//功能
1. 预定义了大量的要下载的图片URL
2. 创建一个GCD queue并开始下载图片
3. 在动画出现消失的时候,同时显示图片
//代码
@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
//************************************************************************//
坦福大学关于gcd的代码,这段代码逐步演示了如何修正错误,其中用到的既是串行队列
1。这个是原始代码
view plain
- (void)viewWillAppear:(BOOL)animated { NSData *imageData = [FlickrFetcher imageDataForPhotoWithURLString:photo.URL]; UIImage *image = [UIImage imageWithData:imageData]; self.imageView.image = image; self.imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height); self.scrollView.contentSize = image.size; }
2。这个是采用gcdd的代码,里面有错误3处
view plain
- (void)viewWillAppear:(BOOL)animated { dispatch_queue_t downloadQueue = dispatch_queue_create(“Flickr downloader”, NULL); dispatch_async(downloadQueue, ^{ NSData *imageData = [FlickrFetcher imageDataForPhotoWithURLString:photo.URL]; UIImage *image = [UIImage imageWithData:imageData]; self.imageView.image = image; self.imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height); self.scrollView.contentSize = image.size; }); }
3。第一个错误,UI更新只能在主线程中 Problem! UIKit calls can only happen in the main thread!
改正后如下:
view plain
- (void)viewWillAppear:(BOOL)animated { dispatch_queue_t downloadQueue = dispatch_queue_create(“Flickr downloader”, NULL); dispatch_async(downloadQueue, ^{ NSData *imageData = [FlickrFetcher imageDataForPhotoWithURLString:photo.URL]; dispatch_async(dispatch_get_main_queue(), ^{ UIImage *image = [UIImage imageWithData:imageData]; self.imageView.image = image; self.imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height); self.scrollView.contentSize = image.size; }); }); }
4。第二个错误,NSManagedObjectContext并不是线程安全的,gcd中访问成员变量有危险
Problem! NSManagedObjectContext is not thread safe,
so we can’t call photo.URL in downloadQueue’s t
改正后如下:
view plain
- (void)viewWillAppear:(BOOL)animated { NSString *url = photo.URL; dispatch_queue_t downloadQueue = dispatch_queue_create(“Flickr downloader”, NULL); dispatch_async(downloadQueue, ^{ NSData *imageData = [FlickrFetcher imageDataForPhotoWithURLString:url]; dispatch_async(dispatch_get_main_queue(), ^{ UIImage *image = [UIImage imageWithData:imageData]; self.imageView.image = image; self.imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height); self.scrollView.contentSize = image.size; }); }); }
5。第三个错误,队列创建后没有释放,内存泄露
view plain
- (void)viewWillAppear:(BOOL)animated { NSString *url = photo.URL; dispatch_queue_t downloadQueue = dispatch_queue_create(“Flickr downloader”, NULL); dispatch_async(downloadQueue, ^{ NSData *imageData = [FlickrFetcher imageDataForPhotoWithURLString:url]; dispatch_async(dispatch_get_main_queue(), ^{ UIImage *image = [UIImage imageWithData:imageData]; self.imageView.image = image; self.imageView.frame = CGRectMake(0, 0, image.size.width, image.size.height); self.scrollView.contentSize = image.size; }); }); dispatch_release(downloadQueue); //won’t actually go away until queue is empty }
发表评论
-
通过NSClassFromString得到nil的解决方法
2013-12-21 20:46 9921<创建于 2013-12-21 20:45:49 注 ... -
UITalbeView系列-滑动显示“删除”
2013-11-26 14:17 1208腾讯的QQ和微信中都有这样的操作,对一个UITableVie ... -
Lua-wax-ARC深入理解
2013-11-25 21:33 2690越来越多的人在项目中用ARC,但是免不了会调用非ARC的库或 ... -
CGContextAddArc用法
2013-09-26 16:59 3075原文链接 http://differentisnotdiffe ... -
iOS开发中常用第三方库的使用和配置-ASIHttpRequest
2013-07-29 16:45 6115所用xcode版本号: 4.6.3 2. httpRequ ... -
iOS开发中宏判断&宏方法
2013-07-29 10:29 177641. 判断是否是iPad #define IS_IPAD ( ... -
iOS开发中常用第三方库的使用和配置-GDataXML
2013-07-19 10:50 9003这篇文章旨在给自己以后需要时能及时的查到,省得每次都去bai ... -
iOS 用javapns插件实现push通知 小解
2013-07-12 12:38 1590java端用到的push插件:http://code.goog ... -
NSLog日志保存到本地
2013-04-01 12:09 1465/* 保存日志 */ - (void)redirectNSLo ... -
iOS杂记
2013-07-29 16:20 1一. 分类和协议 1. 分类可以访问原始类的实例变量,但是不能 ... -
ios中暂停和继续动画【转】
2013-01-08 20:22 2408原帖地址:http://www.cnblogs.com/pen ... -
ARC 与 noARC混用
2012-11-21 09:23 4460===============2013-12-04 08:36 ... -
正则表达式的应用
2012-11-21 09:17 791记下来 省的到时候 没地方找 - (BOOL)valid ... -
storyBoard之初学习
2012-11-20 15:15 994接触到一个项目,用到了storyBoard,虽然在4.2就有了 ... -
UITableView跟随滑动的背景
2012-11-05 13:25 1870原帖地址: http://blog.csdn.net/favo ... -
GCD_demo
2012-11-05 11:23 650原帖:http://blog.csdn.net/favormm ... -
UINavigationBar自定义背景
2012-11-05 09:41 527原帖地址 http://blog.csdn.net/wxg69 ... -
iphone-多线程(NSThread)
2012-08-28 11:04 1247//网络资源 //from: http://blog.sina ... -
coreData中的NSFetchedResultsController 用法
2012-08-27 16:56 3238//回顾一下 core data的用法 //以新建一个项目为 ... -
UITextField处理每次输入值
2012-08-24 14:40 5198需求描述:每次UITextField输入字符,都将数值存入某个 ...
相关推荐
这个名为"iPhone-Wireless-ScanWiFi信号"的源码包,显然是一个专门用于扫描并显示周围可用WiFi信号的iOS应用示例。以下是根据标题、描述以及标签提炼出的相关知识点: 1. **Objective-C或Swift编程**: iOS应用...
《iOS应用源码解析:基于OpenCV的简单iPhone图像处理》 在当今移动开发领域,iOS应用程序的开发已经成为一个热门话题。本篇文章将深入探讨一个名为"simple-iphone-image-processing"的项目,该项目是专门为iOS平台...
《iOS游戏应用源代码解析——acastr7-iPhone-Mario-Game》 在移动设备上,游戏开发一直是热门领域,特别是在iOS平台。本资源“acastr7-iPhone-Mario-Game-bd5c6ea.zip”提供了一个iOS平台上的马里奥游戏应用的源...
《iOS游戏应用源代码解析——gckjdev-HitGame_iPhone-1a30d6d.zip》 本文将深入探讨iOS游戏开发中的关键技术和流程,以gckjdev-HitGame_iPhone-1a30d6d.zip为例,这是一个实际的游戏应用源代码包。我们将从项目结构...
Cocos2D-iPhone是一个广泛使用的开源游戏引擎,特别适合于开发2D游戏,它提供了丰富的功能和易用性,使得开发者能够快速构建游戏应用。 在iOS平台上开发游戏,首先你需要熟悉Objective-C或Swift编程语言,因为Cocos...
11. **性能优化**:考虑到移动设备的资源限制,应用可能包含内存管理和性能优化策略,如避免内存泄漏,使用惰性加载,或者利用GCD(Grand Central Dispatch)进行并发处理。 12. **App Store发布**:最后,完成开发...
这个压缩包文件“acastr7-iPhone-Mario-Game-bd5c6ea.zip”包含了一个iOS平台上的Mario游戏的实例开发源代码。这为我们提供了一个深入理解如何在iOS设备上构建类似经典游戏《马里奥》的移动应用的机会。通过分析这个...
4. **Cocoa Touch**:这是iOS应用程序的基础,提供了触摸事件处理机制。在游戏手柄的实现中,我们需要监听并处理这些触摸事件,将它们转换为游戏逻辑中的相应动作。 5. **SneakInput库**:标签中提到了"SneakInput...
- **Grand Central Dispatch (GCD)**:用于执行异步任务和管理多线程的框架,提高应用的响应性和效率。 - **Operation Queues**:另一种处理异步任务的方式,提供更高级别的抽象和控制。 #### 7. **测试与调试** ...
9. **多线程与GCD**:Grand Central Dispatch(GCD)是苹果的并发编程工具,学习如何利用GCD处理后台任务,提高应用性能。 10. **动画与过渡**:了解如何使用Core Animation实现视图动画和页面过渡效果,提升用户...
"IOS应用源码之【应用】-iPhone eBooks" 是一个针对iPhone电子书应用的源代码库,非常适合开发者深入探究iOS应用的设计和实现。这个压缩包包含了构建一个功能完备的电子书应用所需的全部代码,有助于开发者学习如何...
1. **iOS开发基础**:由于涉及到的是iPhone应用的源码,我们可以推测这将涉及到iOS平台的软件开发。iOS应用主要使用Objective-C或Swift编程语言编写,这两种语言在Apple的Xcode集成开发环境中使用。开发者需要掌握...
《iPhone开发基础教程》是一本专为初学者设计的指南,旨在帮助读者深入了解iPhone应用程序开发的基础知识和技术要点。本书通过全面而系统的讲解,覆盖了从环境搭建到实际应用开发的全过程,是学习iOS开发的理想入门...
8. **多线程编程**:理解GCD(Grand Central Dispatch)和操作队列,提升应用性能和用户体验。 9. **动画与过渡**:利用Core Animation实现视图间的平滑过渡和动态效果,增强用户交互。 10. **App Store发布流程**:...
【标题】"IOS应用源码之【应用】-SOCKS Proxy for iPhone.rar" 提供的是一个关于iOS平台上实现SOCKS代理的源代码。这个源码库专注于为iPhone设备构建一个SOCKS代理服务,这在进行网络调试、安全测试或者需要绕过特定...
在iOS开发中,网络编程是不可或缺的一部分,尤其是在创建iPhone应用程序时。标题中的"IPhone-Network-Programming.zip"表明这是一个关于iPhone应用中网络编程的资源包,主要针对MacOS平台的开发,使用的编程语言是...
【标题】"IOS应用源码之【应用】NXTRover-iPhone控制乐高机器人.rar" 涉及的核心知识点主要集中在iOS开发、乐高机器人控制以及两者之间的交互。以下是关于这些知识点的详细说明: 1. **iOS应用开发**:这是整个项目...
在iOS开发领域,网络编程是构建企业级应用的关键部分,特别是在iPhone和iPad上。本教程“iOS网络高级编程-iPhone和iPad的企业应用开发”聚焦于这个主题,旨在帮助开发者提升其在网络技术上的技能,以便创建功能强大...
《iPhone SDK应用程序开发源代码》是一本专注于iPhone应用开发的专业书籍,其提供的源代码是学习和实践iOS开发的重要资源。本书旨在帮助开发者深入理解iPhone SDK,掌握如何利用它来构建功能丰富的应用程序,并最终...