直接上干貨衷快!
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循環(huán)中...");
}
你需要執(zhí)行的代碼
_stop = YES;
問題產(chǎn)生場景:這個情況是我在 for循環(huán)遇到的宙橱,for循環(huán)一直在運(yùn)行,我想讓他停止蘸拔,用了各種延遲語句(舉例sleep(2);)都會卡著主線程师郑,
我發(fā)現(xiàn)卡主線程是因?yàn)槲疑婕暗絪okcet發(fā)送,才知道肯定阻塞了调窍。
然后我就搜又不阻塞主線程宝冕,又能停止代碼往下走的方法,還真找到一個邓萨,而且確實(shí)好用
解決方法:就是 nsrunloop 這個方法地梨,剛開始for循環(huán)外stop是YES,在異步延遲修改stop的值缔恳,然后用while判斷如果stop值是true進(jìn)入runloop暫停代碼往下走宝剖,2秒之后stop值變成false,跳出while循環(huán)繼續(xù)往下執(zhí)行,stop 又變成true下次又會停止
貼一下那篇文章的鏈接:https://www.cnblogs.com/iosblogx/p/5567240.html
感謝!:侄诈闺!做個記錄,不常用但是會用到的東西