int nowloopId = 0;
- (void)testDisAfter:(int) loopId {
if (nowloopId != loopId) {
return;
}
/// doing something
double delayInSeconds = 1.0;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
__weak typeof (self) wself = self;
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[wself testDisAfter:loopId];
});
}
这样通过 nowloopId++;
来控制 testDisAfter
循环关闭 会不会有问题. nowloopId++;
在主线程执行
总感觉这样操作看着不对. 但是又找不出不对的地方. 所以想请教一下各位。
还有就是. 这样的方式 和 使用 NSTimer 对比
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.