iOS 又不阻塞主线程,又能停止代码往下走的方法

直接上干货!


dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                    _stop = NO;
});
while (_stop) {
          [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate 
      distantFuture]];
          MyLog(@"while循环中...");
}
你需要执行的代码
_stop = YES;

问题产生场景:这个情况是我在 for循环遇到的,for循环一直在运行,我想让他停止,用了各种延迟语句(举例sleep(2);)都会卡着主线程,
我发现卡主线程是因为我涉及到sokcet发送,才知道肯定阻塞了。

然后我就搜又不阻塞主线程,又能停止代码往下走的方法,还真找到一个,而且确实好用

解决方法:就是 nsrunloop 这个方法,刚开始for循环外stop是YES,在异步延迟修改stop的值,然后用while判断如果stop值是true进入runloop暂停代码往下走,2秒之后stop值变成false,跳出while循环继续往下执行,stop 又变成true下次又会停止

贴一下那篇文章的链接:https://www.cnblogs.com/iosblogx/p/5567240.html

感谢!!!做个记录,不常用但是会用到的东西

你可能感兴趣的:(iOS 又不阻塞主线程,又能停止代码往下走的方法)