直接上干货!
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
感谢!!!做个记录,不常用但是会用到的东西