上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 23 下一页
摘要: 两个核心方法:dispatch_async和dispatch_async_f,分别对应Block Objects方法和C Functions方法。我们举一个场景来进行:当我们需要从网络下载一个图片,可以将这个下载工作丢到一个异步线程里面,然后当图片下载完毕后,我们再交给主线程,让主线程去显示这个图片。在这种场景下,我们就需要甬道异步任务了。这里也涉及到了之前提到的__block方式操作本地资源。代码演示如下:dispatch_queue_t concurrentQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 阅读全文
posted @ 2012-12-13 15:28 hhhker 阅读(1562) 评论(0) 推荐(0) 编辑
摘要: 如何在 block 中修改外部变量?????考虑到 block 的目的是为了支持并行编程,对于普通的 local 变量,我们就不能在 block 里面随意修改(原因很简单,block 可以被多个线程并行运行,会有问题的),而且如果你在 block 中修改普通的 local 变量,编译器也会报错。那么该如何修改外部变量呢?有两种办法,第一种是可以修改 static 全局变量;第二种是可以修改用新关键字 __block 修饰的变量。__block关键字一个Block的内部是可以引用自身作用域外的变量的,包括static变量,extern变量或自由变量(定义一个变量的时候,如果不加存储修饰符,默认情 阅读全文
posted @ 2012-12-13 10:12 hhhker 阅读(4275) 评论(0) 推荐(0) 编辑
摘要: @synthesize 可以不用再写了如果在.h文件里有<pre class="brush:objc; toolbar: true; auto-links: false;">@propery NSObject * aProperty</pre>那么可以认为 编译器会类似在.m文件里生成<pre class="brush:objc; toolbar: true; auto-links: false;">@synthesize aProperty = _aProperty</pre>如果上面的都不认识 就可以认 阅读全文
posted @ 2012-12-12 10:22 hhhker 阅读(1293) 评论(0) 推荐(0) 编辑
摘要: BlockApple 在C, Objective-C, C++加上Block這個延申用法。目前只有Mac 10.6 和iOS 4有支援。Block是由一堆可執行的程式組成,也可以稱做沒有名字的Function (Anonymous function)。如果是Mac 10.6 或 iOS 4.0 之前的平台可以利用 http://code.google.com/p/plblocks/ 這個project得以支援Block語法。Apple有一個叫做GCD(Grand Central Dispach)的新功能,用在同步處理(concurrency)的環境下有更好的效率。Block語法產生的動機就是來 阅读全文
posted @ 2012-12-11 17:30 hhhker 阅读(225) 评论(0) 推荐(0) 编辑
摘要: http://www.tongwenguan.com/ 同文馆 阅读全文
posted @ 2012-12-11 15:48 hhhker 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 概述:都是以[KVC]key-Value Coding 为基础Key-Value Coding(KVC)实现分析KVC运用了一个isa-swizzling技术。isa-swizzling就是类型混合指针机制。KVC主要通过isa- swizzling,来实现其内部查找定位的。isa指针,如其名称所指,(就是is a kind of的意思),指向维护分发表的对象的类。该分发表实际上包含了指向实现类中的方法的指针,和其它数据。比如说如下的一行KVC的代码:[site setValue:@"sitename" forKey:@"name"];就会被编译器处理成 阅读全文
posted @ 2012-12-10 15:55 hhhker 阅读(426) 评论(0) 推荐(0) 编辑
摘要: http://www.dreamingwish.com/dream-2012/ios-multi-threaded-programming-guide-directory.html 阅读全文
posted @ 2012-12-07 15:00 hhhker 阅读(192) 评论(0) 推荐(0) 编辑
摘要: Run LoopsRun loops是线程相关的的基础框架的一部分。一个run loop就是一个事件处理的循环,用来不停的调度工作以及处理输入事件。使用run loop的目的是让你的线程在有工作的时候忙于工作,而没工作的时候处于休眠状态。Run loop的管理并不完全自动的。你仍然需要设计你的线程代码在合适的时候启动run loop并正确响应输入事件。Cocoa和Core Fundation都提供了run loop objects来帮助配置和管理你线程的run loop。你的应用程序不需要显式的创建这些对象(run loop objects);每个线程,包括程序的主线程都有与之对应的run l 阅读全文
posted @ 2012-12-07 14:56 hhhker 阅读(5802) 评论(1) 推荐(4) 编辑
摘要: 今天突然才之间才意识到NSTimer这样的运行方式,是在多线程中实现的循环还是在主线程中去实现的呢。当然不可能是在主线程中的while那么简单,那样什么都干不了,简单看了下NSTimer是以同步方式运行的。时间到了,消息发出后,ontimer的函数是在主线程上调用的。我们会经常看到这样的代码:- (IBAction)start:(id)sender{pageStillLoading = YES;[NSThread detachNewThreadSelector:@selector(loadPageInBackground:)toTarget:self withObject:nil];[prog 阅读全文
posted @ 2012-12-07 13:29 hhhker 阅读(21237) 评论(6) 推荐(0) 编辑
摘要: 经常会遇到这样一种情况。在iframe里嵌入另外一个页面时。如果iframe载入的页面响应较快,或许我们感觉不到页面载入的不同步,但试想,如果一个需要内嵌到iframe 里的页面的响应很慢,这里会出现一种什么现象呢?这时将会出现所有页面已经载入完成,但在iframe元素处,将会出现空白,直到内嵌页面完成载入时,该 空白处才会显示新载入的页面。可想而知,一个页面如果长时间的空白,对于浏览者来说将意味着什么。如果在内嵌页面未载入完成时,给出一种加载提示信息。如:“页面加载中”之类的,我想这对浏览页面用户来讲,将不再是煎熬,更是一种视觉上的享受。为了实现这样的效果,一般会采用如下原理处理。· 阅读全文
posted @ 2012-12-04 17:10 hhhker 阅读(1427) 评论(0) 推荐(0) 编辑
上一页 1 ··· 12 13 14 15 16 17 18 19 20 ··· 23 下一页