关于延时执行,有人称为延迟执行,有人称为延时加载,可是延时加载有人又理解成懒加载,好混乱,网上一大堆延时执行方法的代码,我就不重复了。
我这里,只说一个!没错,就是一个,这个延时执行解决了我相当多UIScrollView、UITableView、UICollectionView接收回调时造成的循环问题、迸发问题,下面,上代码:
//延时一秒执行,不阻塞主线程;self.tempArray//这个Object我这里演示才随便这么一写,你可以用你自己的。
[self performSelector:@selector(doLater:) withObject:self.tempArray afterDelay:1.f];
重头戏来了!
取消方法:
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(doLater:) object:self.tempArray];
实战试过,传同一样类型的NSObject就可以取消。不过关于这个NSObject到底应该如果传,我还没有认真摸索,我暂时以使用为目的;
这可以解决
1、用户同时点击2个cell的问题;
2、UIScrollView被迅速拖动时,scrollViewDidScroll:回调方法里的scrollView.contentOffSet问题;
3、tableView、collectionView的willDisplayCell返回太频繁问题;
4、还有很多迸发问题都可以解决,就看你如何举一反三;
这么简单的代码我就不写demo了,不过大家有空可以去我GitHub看看其他简单实用的框架:https://github.com/brainHaert