程序员iOS面试总结iOS

performSelector afterDelay 区别 di

2019-04-27  本文已影响4人  iOS开发之家

我们在.m文件里面加入如下方法

我们发现,在0.2秒之后,delayTest方法并没有走,而如果我们没有使用afterDelay的noDelayTest 方法却直接调用了,这是为什么呢?

其实performSelector 方法相当于告诉当前线程去直接去调用noDelayTest方法,noDelayTest方法当然会被调用,

而performSelector afterDelay 相当于 告诉当前线程 用当前线程的定时器去调用delayTest方法,但是我们知道,在子线程中,默认是没有定时器的,所以delayTest方法将没有被调用的机会.

解决办法

使用dispatch_after代替performSelector afterDelay,具体如下

结论

1.performSelector 如果不使用延时,程序会再子线程上直接调用该方法,方法会被调用
2.如果使用延时,在子线程中方法不会被调用,因为该方法等待定时器去调用,而该子线程中没有定时器,所以不会调用
3.解决2的方法就是使用dispatch_after里面会有一个定时器,来调用方法

如果你依然在编程的世界里迷茫,不知道自己的未来规划,小编给大家推荐一个iOS高级交流群:458839238 里面可以与大神一起交流并走出迷茫。小白可进群免费领取学习资料,看看前辈们是如何在编程的世界里傲然前行!
群内提供数据结构与算法、底层进阶、swift、逆向、整合面试题等免费资料
附上一份收集的各大厂面试题(附答案) ! 群文件直接获取
各大厂面试题

image.png
上一篇 下一篇

猜你喜欢

热点阅读