首页 > IOS 从蓝牙请求数据,然后用CADisplayLink刷新遇到的问题

IOS 从蓝牙请求数据,然后用CADisplayLink刷新遇到的问题

RT,最近在折腾蓝牙OBD,其中在主界面有个仪表盘,需要每10毫秒从蓝牙读取一次汽车当前车速然后让指针旋转到指定位置,当离开主界面的时候让这个仪表盘停止旋转并停止从蓝牙读取数据,我已经通过setIsRefresh:这个方法设置link停止了,也执行了stopRotating这个方法,执行了stopRotating方法后还是会继续从蓝牙读取当前车速,求解

  //设置这个BOOL控制转盘旋转
     -(void)setIsRefresh:(BOOL)isRefresh
    {
        _isRefresh = isRefresh;
        if (self.isRefresh)
        {
            [self start];
        }
        else
        {
            [self stopRotating];

        }

    }
-(void)start
{
    if (self.link) return;
    CADisplayLink *link = [CADisplayLink displayLinkWithTarget:self selector:@selector(update)];

    [link addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode];
    self.link = link;
    NSLog(@"\n——————————————————\n@"转盘开始旋转"\n——————————————————\n",);
}

- (void)stopRotating
{
    [self.link invalidate];
    self.link = nil;
    BLE * ble = [BLE sharBLE];
    ble.isUser = 0;
    NSLog(@"\n——————————————————\n@"转盘停止旋转"\n——————————————————\n",);
}

- (void)update
{
dispatch_async(dispatch_get_global_queue(-2, 0), ^{
请求数据
 });
}

我把这个cell单独分离出来做了个demo,求大神们帮忙看看是神马原因导致link一直在刷新不能停止,demo地址:http://pan.baidu.com/s/1mgmpoE0

【热门文章】
【热门文章】