关于performSelector afterDelay:0 的使用

self performSelector:@selector(doSomeThing) withObject:nil afterDelay:sec];

 这个方法主要用于在当前线程延迟sec秒执行loadPullTableView方法. 如果sec!=0, 我们很好理解. 

但是当sec==0的时候, 会有一些特殊的含义.

官方解释是==0的时候, 不意味着立即执行, 还是会加入到runloop中, 会尽快执行. 

我们可以在viewDidLoad放一个这个方法, afterDelay:0. 

然后分别在 viewDidLoad,viewWillAppear,viewDidappear和这个要执行方法本身做一个log.

你会发现这个方法是最后执行的, 其实是放在当前runloop里面最后执行的

这样的话, 如果我们需要绘制一个界面, 而这个界面需要依赖现有viewController的界面数据, 

我们可以使用这个方法, 因为执行这个方法的时候, viewController的view已经绘制完成了。

 

参考:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/Multithreading/RunLoopManagement/RunLoopManagement.html

https://stackoverflow.com/questions/14717691/performselector-with-delay-0

 

 



posted @ 2021-07-01 18:05  FakeCoder  阅读(151)  评论(0编辑  收藏  举报