美文网首页
performSeletor:after与线程的关系

performSeletor:after与线程的关系

作者: 草莓味辣妹 | 来源:发表于2018-09-10 16:34 被阅读0次

performSeletor:after

- (void)performSelector:(SEL)aSelector withObject:(id)anArgument afterDelay:(NSTimeInterval)delay;

上述方法用于延迟执行一个函数,aSelector为需要延迟执行的函数名,anArgument为函数的参数,delay为延迟的时间

其原理是基于定时器,这就涉及到runloop和线程啦

该方法是在调用时向所在线程对应的runloop中加入定时器事件,

如果是在主线程调用performSeletor:after:函数,则向主线程的runloop中加入定时器事件

如果在子线程中调用performSeletor:after:函数,该方法会失效,即并不会执行需要延迟的函数,这是因为子线程的runloop默认不开启,所以无法添加定时器事件,因此延迟执行不生效

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(handleCleanFinished:) object:nil]

取消延迟执行的函数,参数应保持一致,否则无法取消。

值得注意的是,两个函数的执行应保持在同一个线程,否则取消延迟执行失效。

- (void)performSelector:(SEL)aSelector onThread:(NSThread*)thr withObject:(id)arg waitUntilDone:(BOOL)wait;

- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait;

相关文章

  • performSeletor:after与线程的关系

    performSeletor:after - (void)performSelector:(SEL)aSelect...

  • 关于线程

    多线程与线程优化CPU核心数与线程数的关系多核心多线程 Simultaneous Multithreading.简...

  • 22.iOS底层学习之多线程原理

    本篇提纲:1、线程与进程2、多线程3、多线程相关面试题4、线程安全问题5、线程与runloop的关系 线程与进程 ...

  • swfit 3.0 线程延迟

    在swift 2 里线程延迟还沿用oc里的dispatch_after dispatch_after(dispat...

  • 父子进程 父子线程 守护线程

    参考 Java中的父线程与子线程守护线程与守护进程 主线程与子线程生命周期没关系 Son.java Main.ja...

  • 线程数优化设置,cpu、内存、io问题排查

    cpu数、核数、与线程数关系: 1、线程数究竟设多少合理 2、线程池大小设置,CPU的核心数、线程数的关系和区别,...

  • linux多进程与多线程

    linux多进程与多线程。 一,线程与进程的对应关系 先回答一个大家比较关心的问题,就是线程和进程的对应关系。 第...

  • GCD

    GCD 队列与线程的关系 主队列和主线程 『ios』主线程 和 主队列的关系,绝对安全的UI操作,主线程中一定是主...

  • 线程的状态

    线程状态: 新建:new了以后新建了线程对象 等待:after new,before start(),在new完了...

  • java面试3

    1. 进程与线程的区别? 进程和线程的关系: 进程与线程的区别: 2.struts2和springMVC的区别? ...

网友评论

      本文标题:performSeletor:after与线程的关系

      本文链接:https://www.haomeiwen.com/subject/cjgsgftx.html