iOS开发-GCD 常见用法一(延迟执行)

一、延迟执行
1.介绍
iOS常见的延时执行有2种方式

(1)调用NSObject的方法

[self performSelector:@selector(run) withObject:nil afterDelay:2.0];

// 2秒后再调用self的run方法

 

(2)使用GCD函数

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

    // 2秒后异步执行这里的代码...

});

2.说明

第一种方法,该方法在那个线程调用,那么run就在哪个线程执行(当前线程),通常是主线程。

[self performSelector:@selector(run) withObject:nil afterDelay:3.0];

说明:在3秒钟之后,执行run函数

代码示例:

- (void)viewDidLoad {
    [
superviewDidLoad];
   
// Do any additional setup after loading the view, typically from a nib.
    [
superviewDidLoad];
        
NSLog(@"打印线程----%@",[NSThreadcurrentThread]);
       
//延迟执行
//第一种方法:延迟3秒钟调用run函数
    [
selfperformSelector:@selector(run)withObject:nilafterDelay:5.0];
   
     }
 -(
void)run
 {
        
NSLog(@"延迟执行----%@",[NSThreadcurrentThread]);
     }
// 点击屏幕就触发方法
 -(void)touchesBegan:(NSSet*)touches withEvent:(UIEvent*)event
 {
        
//在异步函数中执行
        
dispatch_queue_t queue =dispatch_queue_create("wendingding",0);
   
        
dispatch_sync(queue, ^{
                 [
selfperformSelector:@selector(test)withObject:nilafterDelay:5.0];
            });
        
NSLog(@"异步函数");
     }
 -(
void)test
 {
    
NSLog(@"异步函数中延迟执行----%@",[NSThreadcurrentThread]);
    
     }
执行结果



第二种方法,
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

       //延迟执行的方法

    });
在5秒钟之后,执行block中的代码段。

- (void)viewDidLoad {

   
// Do any additional setup after loading the view, typically from a nib.
    [superviewDidLoad];
           NSLog(@"打印当前线程---%@",  [NSThread currentThread]);
   
        
//延迟执行,第二种方式
        
//可以安排其线程(1),主队列
        
dispatch_queue_tqueue=dispatch_get_main_queue();
       
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0*NSEC_PER_SEC)), queue, ^{
               
NSLog(@"主队列--延迟执行------%@",[NSThreadcurrentThread]);
            });

       
//可以安排其线程(2),并发队列
        
//1.获取全局并发队列
        
dispatch_queue_tqueue1=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
        
//2.计算任务执行的时间
        
dispatch_time_twhen=dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0*NSEC_PER_SEC));
        
//3.会在when这个时间点,执行queue中的这个任务
        
dispatch_after(when, queue1, ^{
                
NSLog(@"并发队列-延迟执行------%@",[NSThreadcurrentThread]);
             });

}

执行结果
如果队列是主队列,那么就在主线程执行,如果对列是并发队列,那么就会开启一个新线程,在子线程中执行
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iOS开发中,支付是一个非常重要的功能。在开发支付时,需要考虑到支付流程、支付方式、支付安全等方面的内容。以下是一些开发支付的要点: 1. 集成支付SDK iOS开发中,一般使用第三方支付SDK来实现支付功能。常见的支付SDK包括:支付宝SDK、微信支付SDK、银联支付SDK等。在使用SDK前,需要先注册开发者账号,并获取相应的API Key和App ID等信息。 2. 支付流程 支付流程一般包括以下几个步骤: - 用户选择支付方式; - 向支付平台发起支付请求; - 用户输入支付密码; - 支付平台返回支付结果; - 应用根据支付结果进行相应的处理。 3. 支付安全 支付安全是非常重要的。在开发中,需要考虑到以下方面: - 用户信息的安全保护:包括用户的账号、密码、支付信息等; - 支付数据的安全保护:对于涉及到支付的数据,需要采用加密算法进行保护,避免被非法攻击者窃取; - 安全审计:需要对支付过程中的各个环节进行安全审计,及时发现并修复漏洞。 4. 支付方式 在iOS开发中,常见的支付方式包括: - 支付宝支付:支持PC端、移动端、扫码支付等多种支付方式; - 微信支付:支持微信内支付、H5支付、APP支付等多种支付方式; - 苹果支付:支持应用内购买,用户可以直接使用Apple ID进行支付。 需要根据应用的实际情况,选择适合的支付方式。 总之,开发支付需要考虑到多个方面的内容,包括支付流程、支付方式、支付安全等,需要仔细规划和实现,以保证支付功能的正常运作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值