`

iOS dispatch_after延时执行

    博客分类:
  • ios
 
阅读更多

dispatch_after函数并不是在指定时间之后才开始执行处理,而是在指定时间之后将任务追加到主队列中。

 

#pragma mark dispatch_after
- (void)gcd_dispatch_after {
    //打印当前线程
    NSLog(@"currentThread---%@",[NSThread currentThread]);
    NSLog(@"asyncMain---begin");
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
        //2.0秒后追加任务代码到主队列,并开始执行
        //打印当前线程
        NSLog(@"after---%@",[NSThread currentThread]);
    });
}
//Swift版本
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {        
}

 

//2021-06-22 11:39:06.00000  GCD[2488:1146668] currentThread---<NSThread:0x283924dc0>{number = 1,name = main}
//2021-06-22 11:39:06.00000  GCD[2488:1146668] asyncMain---begin
//2021-06-22 11:39:08.00000  GCD[2488:1146668] after---<NSThread:0x283924dc0>{number = 1,name = main}

 

分享到:
评论

相关推荐

    iOS GCD开发总结整理

    `dispatch_after`函数可用于延迟执行任务。 ```swift NSTimeInterval delayInSeconds = 2.0; dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC)); dispatch_...

    OC- GCD延时-示例代码

    延时操作通常涉及在特定时间后执行某项任务,GCD提供了`dispatch_after`函数来实现这一功能。 1. **Dispatch Queues** - 主队列(Main Queue):负责更新UI,确保在主线程中运行,避免UI操作出现线程安全问题。 -...

    GCD常用和不常用API说明GCD-Demo-master.zip

    - `dispatch_after`的延时执行示例。 - `dispatch_group`的使用,实现任务间的依赖关系。 - `dispatch_barrier_async`的使用,展示其在并发队列上的作用。 - 通过`dispatch_semaphore`控制并发访问资源的示例。 - ...

    IOS多线程之GCD(3) - iOS知识库1

    首先,iOS提供了两种常见的延时执行方式: 1. 调用`performSelector:withObject:afterDelay:`方法。这是一个非常简单的延迟执行方法,它的特点是无论在哪里调用,`rc\`函数都会在当前线程中执行。例如,在`...

    GCDAfterTestAll Demo代码

    在Demo“GCDAfterTestAll”中,我们可能会看到如何创建和使用这两种类型的队列,以及如何结合`dispatch_after`来实现延迟执行。开发者可能会创建自定义的串行队列或并行队列,或者使用系统提供的全局队列。 系统...

    iOS进阶1

    全局并发队列可通过`dispatch_get_global_queue`获取,`dispatch_after`用于延时执行。 2. **并发控制**: - `dispatch_queue_create`可创建自定义队列,`DISPATCH_QUEUE_CONCURRENT`表示并发队列,`NULL`表示串行...

    iOS中延时执行的几种方式比较及汇总

    本文将对比分析iOS中实现延时执行的四种常见方法:`performSelector`、`NSTimer`、`sleepForTimeInterval`以及`GCD`。 1. **performSelector** `performSelector`是Objective-C中的一个方法,可以用于延迟调用某个...

    OC Control UIControl+PQ_EventExtension(按键点击延时).zip

    在实现这个功能时,开发者可能使用了GCD(Grand Central Dispatch)中的`dispatch_after`函数来设置延迟执行的任务,或者使用NSTimer来达到同样的效果。`dispatch_after`是异步执行的,可以在指定的时间后在全局队列...

    ios demo,单击按钮,延时某个操作,并且完成了动态创建弹出式菜单功能

    GCD提供了一个`dispatch_after`函数,它可以异步地在指定的时间延迟后执行一个Block。例如: ```swift let delayTime = DispatchTime.now() + 2.0 // 延迟2秒 DispatchQueue.main.asyncAfter(deadline: delayTime) ...

    iOS中常用的宏定义总结

    dispatch_after(popTime, dispatch_get_main_queue(), ^{ \ [self performSelector:@selector(__selector)]; \ }); ``` 使用时调用`DELAY_PERFORM_SELECTOR`并传入方法名和延迟时间。 8. **防止空指针崩溃**:...

    iOS 开发中的 喷枪模式

    4. **设置延时**: 在子线程中,可以使用`dispatch_after`或`CADisplayLink`设置适当的延时,以便每个字符之间有一定的间隔。延时的设置可以根据需求调整,以控制动画的速度。 5. **更新UILabel内容**: 在延时函数的...

    iOS 多线程

    1. **dispatch_after**:用于设置延迟执行的任务,不精确,适合一次性延迟执行。 2. **dispatch_source**:可以创建定时器源,实现更精确的定时任务,且支持取消。 五、GCD内存管理 1. GCD自动管理任务的生命周期...

    关于iOS多线程,你看我就够了 - 简书1

    此外,延迟执行(延时任务)在iOS开发中也很常见,可以使用GCD的`dispatch_after`或者`NSRunLoop`配合`NSTimer`实现。单例模式在多线程环境下需要特别注意,因为线程安全问题可能导致多个实例的创建,通常通过GCD的...

    GCD Trainer 0[1].0.0.4.rar

    4. **延迟执行**:GCD 提供了 dispatch_after 函数,可以设置延时执行任务,这对于定时任务或者异步回调非常有用。 5. **栅栏函数**:dispatch_barrier_async 和 dispatch_barrier_sync 可以确保在屏障任务之前的...

    GCDAfterTest Demo代码

    在GCD中,可以使用`dispatch_after()`函数或`dispatch_time()`函数来实现延迟执行。这两个函数结合使用,可以设置一个时间点,在这个时间点之后才执行特定的任务。 例如,以下代码展示了如何在5秒后执行一个Block:...

    GCD 操作demo

    - **延迟执行(Dispatch_after)**:可能使用`dispatch_after`函数安排在未来某个时间点执行任务,比如延时加载或刷新视图。 - **栅栏块(Dispatch_barrier)**:在并行队列上,可以使用栅栏块确保某些任务在所有...

    iOS面试题-iOS部分

    - 延时执行代码,可以使用`performSelector:withObject:afterDelay:`,或者GCD的`dispatch_after`。 这些都是iOS面试中常见的技术问题,深入理解并能够熟练应用这些知识点将有助于在面试中表现出色。同时,还需要...

    IOS应用源码——一些iPhone开源项目代码SplashDemo.zip

    因此,项目中会设定一个适当的延时,例如使用GCD(Grand Central Dispatch)的`dispatch_after`函数,或者定时器(NSTimer)来在一定时间后自动跳转。 5. **生命周期管理**:了解视图控制器的生命周期对于正确管理...

    IOS部分面试题

    在iOS开发领域,面试题...- 延时执行:可以使用`performSelector:withObject:afterDelay:`或者GCD的`dispatch_after`。 以上是iOS面试中可能会遇到的一些基础问题和解答,掌握这些知识点对于iOS开发者来说至关重要。

    iOS笔试题

    dispatch_after(popTime, dispatch_get_main_queue(), ^{ // 延迟执行的代码 }); ``` #### 九、实例分析 对于以下代码片段: ```objective-c NSMutableArray *ary = [[NSMutableArray array] retain]; NSString *...

Global site tag (gtag.js) - Google Analytics