• 停止方法iOS CGD 任务开始与结束


    改章节是一篇关于停止方法的帖子

        尾末有demo地址

        1.在Controll中加上一个button

        

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    - ( void )viewDidLoad
    {
         [super viewDidLoad];
         UIButton * tempButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
         [tempButton setFrame:CGRectMake(50, 50, 220, 40)];
         [tempButton setTitle:@ "ClickME"  forState:UIControlStateNormal];
         [tempButton addTarget:self action:@selector(clickButton) forControlEvents:UIControlEventTouchUpInside];
         [self.view addSubview:tempButton];
         // Do any additional setup after loading the view, typically from a nib.
    }

        2.点击button,然后开始两个CGD任务。其中一个在A,1s后停止,停止时将任务B也停止。

        停止方法,cancel这个方法。

        每日一道理
    青春是用意志的血滴和拼搏的汗水酿成的琼浆——历久弥香;青春是用不凋的希望和不灭的向往编织的彩虹——绚丽辉煌;青春是用永恒的执著和顽强的韧劲筑起的一道铜墙铁壁——固若金汤。

        

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    - ( void )clickButton
    {
            
         __block UIView * tempView = [[UIView alloc] initWithFrame:CGRectMake(50, 100, 220, 30)];
         [tempView setBackgroundColor:[UIColor grayColor]];
         [self.view addSubview:tempView];
         [tempView release];
            
         __block  BOOL  cancel = NO;
         //点击以后就会开始行执这个方法
         dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
         dispatch_async(queue, ^{
             int  i = 0;
             while  (i < 1000000000 && cancel == NO) {
                 i++;
             }
             NSLog(@ "Task end: i = %d" , i);
             //这个不会行执,因为在之前,gcd task经已结束
             [tempView removeFromSuperview];
         });
            
         //1s 以后行执这个方法
         double  delayInSeconds = 1.0;
         dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
         dispatch_after(popTime, dispatch_get_main_queue(), ^( void ){
             NSLog(@ "A GCD Task Start" );
             cancel = YES;
             [tempView setBackgroundColor:[UIColor blackColor]];
         });
    }

        3.行运结果

        

    1
    2
    2013-05-08 19:38:35.730 BlockAsync[1880:11303] A GCD Task Start
    2013-05-08 19:38:35.732 BlockAsync[1880:12303] Task end: i = 403577657

        Demo:http://download.csdn.net/detail/take8619702/5345809

    文章结束给大家分享下程序员的一些笑话语录: 手机终究会变成PC,所以ip会比wm更加畅销,但是有一天手机强大到一定程度了就会发现只有wm的支持才能完美享受。就好比树和草,草长得再高也是草,时间到了条件成熟了树就会窜天高了。www.ishuo.cn

  • 相关阅读:
    hive 修复分区、添加二级分区
    hive sql 查询一张表的数据不在另一张表中
    shell 命令 bc linux下的计算器
    shell 命令 grep -v
    shell 命令 -- 漂亮的资源查看命令 htop
    shell 命令 --ps aux | grep
    presto调研和json解析函数的使用
    shell wc -l
    hive 动态分区与混合分区
    ThreadLocal原理分析与使用场景(转)
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3069855.html
Copyright © 2020-2023  润新知