ios-GCD和NSOperation的区别

GCD相比于NSOperation中有调度组,有延迟函数,如果我们想延迟的在子线程上做一些事情,我们只需要把 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        NSLog(@"kkk");
    });  把这个主队列改成全局并发队列或者并发队列或者串行队列都可以  有once函数static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        NSLog(@"kk:");
    });只执行一次。

而NSOperation中有最大并发数,队列的暂停,继续,取消,以及操作直接的依赖。

暂停和取消的是没有执行完的操作,会执行完当前的操作。

NSOperation中的服务质量属性就相当于线程的优先级。

completionBlock属性是当操作执行完之后,调用的block中的代码块。

我们在操作依赖的时候要避免循环的依赖。

在ios8开始的时候是使用GCD还是NSOperation都会开启很多条线程了

在ios7.0的时候GCD一般就会开启5-6条线程.

你可能感兴趣的:(ios-开发)