2012年12月 的存档

iOS系统GCD学习(4):dispatch_group2

dispatch_apply的使用

  对于同步执行,GCD提供了一个简化方法叫做dispatch_apply。这个函数调用单一block多次,并平行运算,然后等待所有运算结束,就像我们想要的那样:

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_apply([array count], queue, ^(size_t index){
        [self doSomethingIntensiveWith:[array objectAtIndex:index]];
    });
    [self doSomethingWith:array];

阅读更多…

iOS系统GCD学习(3):dispatch_group

  设想下面的循环:

    for(id obj in array)
        [self doSomethingIntensiveWith:obj];

  假定 -doSomethingIntensiveWith: 是线程安全的且可以同时执行多个.一个array通常包含多个元素,这样的话,我们可以很简单地使用GCD来平行运算: 阅读更多…

iOS系统GCD学习(2):Dispatch Queue

  GCD的基本概念就是dispatch queue。dispatch queue是一个对象,它可以接受任务,并将任务以先到先执行的顺序来执行。dispatch queue可以是并发的或串行的。并发任务会像NSOperationQueue那样基于系统负载来合适地并发进行,串行队列同一时间只执行单一任务。 阅读更多…

编译发布版本的时候移除NSLog输出的方法

  简单介绍以下几个宏:
1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到把前面多余的”,”去掉,否则会编译出错。
2) __FILE__ 宏在预编译时会替换成当前的源文件名
3) __LINE__宏在预编译时会替换成当前的行号
4) __FUNCTION__宏在预编译时会替换成当前的函数名称 阅读更多…

iOS系统GCD学习(1):介绍

什么是GCD?

  Grand Central Dispatch 简称(GCD)是苹果公司开发的技术,以优化的应用程序支持多核心处理器和其他的对称多处理系统的系统。这建立在任务并行执行的线程池模式的基础上的。它首次发布在Mac OS X 10.6 ,iOS 4及以上也可用。它是一套低层API,提供了一种新的方法来进行并发程序编写。从基本功能上讲,GCD有点像NSOperationQueue,他们都允许程序将任务切分为多个单一任务然后提交至工作队列来并发地或者串行地执行。GCD比之NSOpertionQueue更底层更高效,并且它不是Cocoa框架的一部分。 阅读更多…

UIViewController各个方法的加载顺序

加载过程:
一般情况下调用 init方法或者调用initWithNibName方法实例化UIViewController, 不管调用哪个方法都为调用initWithNibName(方法定义如下) 阅读更多…

ios

GCD学习目录总结

iOS系统GCD学习(1):介绍
iOS系统GCD学习(2):Dispatch Queue
iOS系统GCD学习(3):dispatch_group
iOS系统GCD学习(4):dispatch_group2
iOS系统GCD学习(5):信号量机制
iOS系统GCD学习(6):Dispatch Sources
iOS系统GCD学习(7):dispatch_once
iOS系统GCD学习(8):Dispatch Queue挂起恢复和目标指定
iOS系统GCD学习(9):多核心的性能
iOS系统GCD学习(10):常见的错误
iOS系统GCD学习(11):使用串行队列实现简单的预加载
iOS系统GCD学习(12):IO资源竞争
【译】dispatch_once的秘密