坑:NSOperation写的方法调用没有效果

背景: 项目里面有个方法想重复调用, 不想写timer, 太麻烦了, 决定用NSOperation来干, 里面加一个while 循环, 然后sleep一下, 重复调用.上代码. 但是那个想要执行的方法就是不执行, 打断点sleep确实是执行了, 想当搞不懂了
    NSOperation *opr = [NSBlockOperation blockOperationWithBlock:^{
        while (true) {
            sleep(5);
            dispatch_async(dispatch_get_main_queue(), ^{
                [self getAllHealthData];
            });
        }
    }];
    [opr start];
    [_myQueue addOperation:opr];

思考: 当时在想难道是dispatch那里错了, 当前执行的线程有问题, 可是怎么看也不像有问题的样子, 调试的时候发现有时候界面会卡死, 当时在想_myQueue弄错了?跑到主线程去了, 网上找了一圈发现queue写法没有问题, 后来仔细对比以前写的代码, 发现多了[opr start]. 删掉就正常运行了.

总计: operation不需要手动start, 直接加入queue即可, 如果手动调用start, 会在当前线程里面执行, 所以才会出现前面遇到的问题.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值