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