首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在“休眠”线程的当前运行循环上调用performSelector的结果?

在"休眠"线程的当前运行循环上调用performSelector的结果是,会将指定的方法添加到当前线程的运行循环中,并在指定的延迟时间后执行该方法。

performSelector是NSObject类的一个方法,用于在指定的对象上调用指定的方法。当在一个线程中调用performSelector方法时,它会将指定的方法添加到当前线程的运行循环中,并在指定的延迟时间后执行该方法。

这个方法的调用结果是异步的,即它会立即返回,并在指定的延迟时间后执行方法。在执行方法之前,当前线程的运行循环会继续运行,直到方法被执行。

performSelector方法的应用场景包括但不限于:

  1. 在后台线程中执行耗时操作后,更新UI界面。
  2. 延迟执行某个方法。
  3. 在特定条件下执行某个方法。

腾讯云相关产品中,与线程相关的服务包括云服务器(ECS)和弹性伸缩(Auto Scaling)。云服务器(ECS)提供了可弹性伸缩的计算能力,可以根据业务需求自动调整实例数量。弹性伸缩(Auto Scaling)则可以根据负载情况自动调整云服务器实例的数量,以保证应用的可用性和性能。

更多关于腾讯云产品的信息,请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

2021年,大厂常问iOS面试题--Runloop篇

2.RunLoop的运行模式 RunLoop的运行模式共有5种,RunLoop只会运行在一个模式下,要切换模式,就要暂停当前模式,重写启动一个运行模式 ``` - kCFRunLoopDefaultMode...实际上 RunLoop 就是这样一个函数,其内部是一个 do-while 循环。当你调用 CFRunLoopRun() 时,线程就会一直停留在这个循环里;直到超时或被手动停止,该函数才会返回。 !...当调用 NSObject 的 performSelecter:afterDelay: 后,实际上其内部会创建一个 Timer 并添加到当前线程的 RunLoop 中。...当调用 performSelector:onThread: 时,实际上其会创建一个 Timer 加到对应的线程去,同样的,如果对应线程没有 RunLoop 该方法也会失效。...8.PerformSelector:afterDelay:这个方法在子线程中是否起作用? 不起作用,子线程默认没有 Runloop,也就没有 Timer。

1.9K10

深入浅出 RunLoop(一):初识

RunLoop 简介 运行循环,在程序运行过程中循环做一些事情(如接收消息、处理消息、休眠等待等); RunLoop是通过内部维护的事件循环来对事件/消息进行管理的一个对象; RunLoop不是一个简单的...事件循环 事件循环就是对事件/消息进行管理,事件循环可以达到: 没有消息需要处理时,休眠线程以避免资源占用。...从用户态切换到内核态,等待消息; 有消息需要处理时,立刻唤醒线程,回到用户态处理消息; 通过调用mach_msg()函数来转移当前线程的控制权给内核态/用户态。...而我们的 iOS 程序能保持持续运行的原因就是在main()函数中调用了UIApplicationMain函数,这个函数内部会启动主线程的RunLoop; 处理 App 中的的各种事件(比如触摸事件、定时器事件等...在子线程上使用定时器 解决NSTimer在滑动时停止工作的问题 控制线程的生命周期,实现一个常驻线程 在 Cocoa 应用程序中使用任何performSelector...方法 监控应用卡顿 性能优化

45520
  • RunLoop数据结构、RunLoop的实现机制、RunLoop的Mode、RunLoop与NSTimer和线程

    CFRunLoop 由pthread(线程对象,说明RunLoop和线程是一一对应的)、currentMode(当前所处的运行模式)、modes(多个运行模式的集合)、commonModes(模式名称字符串集合...对于RunLoop而言最核心的事情就是保证线程在没有消息的时候休眠,在有消息时唤醒,以提高程序性能。RunLoop这个机制是依靠系统内核来完成的(苹果操作系统核心组件Darwin中的Mach)。...1、为当前线程开启一个RunLoop(第一次调用 [NSRunLoop currentRunLoop]方法时实际是会先去创建一个RunLoop) 1、向当前RunLoop中添加一个Port/Source...即在调用RunLoop的run方法后,由于其mode中没有添加任何item去维持RunLoop的时间循环,RunLoop随即还是会退出。...当我们在子请求数据的同时滑动浏览当前页面,如果数据请求成功要切回主线程更新UI,那么就会影响当前正在滑动的体验。

    64040

    iOS面试题:RunLoop剖析

    由pthread(线程对象,说明RunLoop和线程是一一对应的)、currentMode(当前所处的运行模式)、modes(多个运行模式的集合)、commonModes(模式名称字符串集合)、commonModelItems...对于RunLoop而言最核心的事情就是保证线程在没有消息的时候休眠,在有消息时唤醒,以提高程序性能。RunLoop这个机制是依靠系统内核来完成的(苹果操作系统核心组件Darwin中的Mach)。...1、为当前线程开启一个RunLoop(第一次调用 NSRunLoop currentRunLoop方法时实际是会先去创建一个RunLoop) 1、向当前RunLoop中添加一个Port/Source等维持...即在调用RunLoop的run方法后,由于其mode中没有添加任何item去维持RunLoop的时间循环,RunLoop随即还是会退出。...当我们在子请求数据的同时滑动浏览当前页面,如果数据请求成功要切回主线程更新UI,那么就会影响当前正在滑动的体验。

    84820

    iOS多线程:『RunLoop』详尽总结RunLoop

    可以理解为字面意思:Run表示运行,Loop表示循环。结合在一起就是运行的循环的意思。哈哈,我更愿意翻译为『跑圈』。直观理解就像是不停的跑圈。...RunLoop实际上是一个对象,这个对象在循环中用来处理程序运行过程中出现的各种事件(比如说触摸事件、UI刷新事件、定时器事件、Selector事件),从而保持程序的持续运行;而且在没有事件处理的时候,...我们只能在当前线程中操作当前线程的RunLoop,而不能去操作其他线程的RunLoop。 RunLoop对象在第一次获取RunLoop时创建,销毁则是在线程结束的时候。...利用PerformSelector设置当前线程的RunLoop的运行模式 利用performSelector方法为UIImageView调用setImage:方法,并利用inModes将其设置为RunLoop...那么,我们在touchesBegan中调用PerformSelector,从而实现在点击屏幕的时候调用run2方法。Demo地址。

    2.1K50

    iOS多线程之二:NSThread的使用

    Paste_Image.png 二、线程之间的通讯 // 在主线程中运行方法,wait表示是否阻塞这个方法的调用,如果为YES则等待主线程中运行方法结束,一般可用于在子线程中调用UI方法。...; // 获得当前线程 + (void)sleepForTimeInterval:(NSTimeInterval)ti; // 线程休眠 + (NSThread...:(NSDate *)date; // 当前线程休眠到指定日期 + (void)exit; // 强行退出当前线程...+ (NSArray *)callStackReturnAddresses // 线程的调用都会有函数的调用函数的调用就会有栈返回地址的记录,在这里返回的是函 数调用返回的虚拟地址...,说白了就是在该线程中函数调用的虚拟地址的数组 + (NSArray *)callStackSymbols // 同上面的方法一样,只不过返回的是该线程调用函数的名字数字

    69710

    Runloop(4):应用

    2、Run Loops可以让你使用最小的资源来创建长时间运行线程。...因为run loop在没有任何事件处理的时候会把它的线程置于休眠状态,它消除了消耗CPU周期轮询,并防止处理器本身进入休眠状态并节省电源。 RunLoop,就是一个循环,只是这个循环里加入很多特性。...所以重点便是这个需要处理的事件,在RunLoop中,需要处理的事件分两类,一种是输入源,一种是定时器,定时器好理解就是那些需要定时执行的操作,输入源分三类:performSelector源,基于端口(Mach...3、PerformSelector 当调用 NSObject 的 performSelecter:afterDelay: 后,实际上其内部会创建一个 Timer 并添加到当前线程的 RunLoop 中。...当调用 performSelector:onThread: 时,实际上其会创建一个 Timer 加到对应的线程去,同样的,如果对应线程没有 RunLoop 该方法也会失效。

    28920

    多线程(一):NSThread

    因为 run loop 在没有任何事件处理的时候会把它的线程置于休眠状态,它消除了消耗 CPU 周期轮询,并防止处理器本身进入休眠状态并节省电源。...长时运行的线程需求新建额外的自动释放池来更频繁的释放它的对象。比如,一个使用 run loop 的线程可能在每次运行完一次循环的时候创建并释放该自动释放池。...在类Unix操作系统(Unix、Linux、Mac OS X等)中,都使用Pthreads作为操作系统的线程,这是一套在很多操作系统上都通用的多线程API,所以移植性很强(然并卵),当然在 iOS 中也是可以的...使用的方式为接收线程中注册NSMachPort,在另外的线程中使用此port发送消息,则被注册线程会收到相应消息,然后最终在主线程里调用某个回调函数。...可以看到,使用NSMachPort的结果为调用了其它线程的1个函数,而这正是performSelector所做的事情,所以,NSMachPort是个鸡肋。

    36620

    iOS 多线程-Thread

    就绪:将线程对象添加到可调度线程池,等待 CPU 调用; 运行:CPU 从可调度线程池中选中线程进行调用,当前选中的线程为运行状态,未选中的重新变为就绪状态,此步程序员无法控制,由系统来处理; 堵塞:线程休眠处理...线程 sleep、加了同步锁的对象正在被其他线程操作时,线程也会进入休眠; 死亡:当线程需要执行的代码块执行完,或者线程强制退出,线程结束。...实质上是放进了可调度线程池,等待被 CPU 调用。线程执行结束之前,状态可能会在就绪状态 和 运行状态 之间来回的切换。就绪状态 和 运行状态 之间的状态切换由 CPU 来完成, 程序员无法干涉。...调用这个方法之前,一定要注意释放之前由 C 语言创建的对象,不然会造成内存泄漏等问题。 sleep 目前只能控制其休眠多长时间或休眠到什么时间,外部无法手动唤醒。...current:当前线程,比较常用 callStackSymbols:线程调用堆栈,在异步捕获场景下常用 NSThreadWillExit:线程终止通知 最后 要更加努力呀!

    95920

    NSRunLoop-iOS中隐藏的大杀器

    - RunLoop的作用相当于在线程上维持一个类似while的死循环,在这个循环里内部不断的处理各种任务(比如:source/timer/Observer), 并且在不执行任务时,RunLoop 会让线程进入睡眠状态...- 每一个线程都有其对应的RunLoop,但是默认非主线程的RunLoop是没有运行的, (主线程上的RunLoop在App运行时由系统自动启动),需要为RunLoop添加至少一个事件源, 然后去...- NSRunLoop的作用在于有事情做的时候使的当前NSRunLoop的线程工作,没有事情做让当前NSRunLoop的线程休眠。...runloop,timer的事件是不会响应的 - 在Cocoa 应用中使用performSelector…方法 // 应该是performSelector…这种方法会启动一个线程并启动run loop...其中input source分发异步事件给相应的处理程序并且调用runUntilDate:方法(这个方法会在该线程关联的NSRunLoop 对象上被调用)来退出其Run Loop。

    1.1K10

    RunLoop在iOS开发中的应用

    1.CFRunLoopSourceRef 事件源 在下面代码中,通过自定义子线程thread,运行结果可知hello China是不会被打印的,子线程在打印完hello world 就exit了。...它实际上也是不断调用-runMode:beforeDate:方法来让runloop运行在NSDefaultRunLoopMode模式下,直到到达超时时间。...调用CFRunLoopStop(runloopRef)无法停止Run Loop的运行,这个方法只会结束当前-runMode:beforeDate:的调用,之后的runMode:beforeDate:该调用的还是会继续...当用户正在操作我们的APP的时候数据发生异常,程序会瞬间闪退,实际上从产品角度老说是一种非常不好的体验,而对码农来说也根本无法知道当前程序crash的堆栈信息,通过利用runloop的线程常驻方式,当程序发生异常的时候...runloop的的进入/休眠、退出的activities 来处理autoreleasepool,也是同学们长讨论的自动释放池在什么时候释放的问题。

    1.9K20

    iOS 事件处理机制与图像渲染过程

    Block事件,非延迟的NSObject PerformSelector立即调用,dispatch_after立即调用,block回调。...,确保非延迟的NSObject PerformSelector调用和非延迟的dispatch_after调用在当前runloop执行。...两个线程同时操作view的树形结构:在线程A中for循环遍历并操作当前View的所有subView,然后此时线程B中将某个subView直接删除,这就导致了错乱还可能导致应用崩溃。...当调用 NSObject 的 performSelecter:afterDelay: 后,实际上其内部会创建一个 Timer 并添加到当前线程的 RunLoop 中。...当调用 performSelector:onThread: 时,实际上其会创建一个 Timer 加到对应的线程去,同样的,如果对应线程没有 RunLoop 该方法也会失效。

    5.6K100

    iOS开发-RunLoop

    RunLoop 从字面意思来看:跑圈、运动循环 基本用法:保持程序持续运行、处理App中的各种事件(触摸事件、定时器事件、SEL等等) 为什么需要它:节省CPU资源、 提高性能 如果没有RunLoop...函数内部就启动了一个RunLoop 2.UIApplicationMain函数一直没有返回,保持了程序的持续运行 3.这个默认启动的RunLoop是主线程关联的。...4.一个线程对应一个RunLoop,主线程的RunLoop默认已经启动 5.子线程的RunLoop得手动启动(调用run方法) 6.RunLoop只能选择一个Mode启动,如果当前Mode中没有任Source...; 1.同一时间只可以运行其中的一种model 2.切换Model只能退出Runloop,重新进入 3.系统默认注册了5个Mode //App默认的Mode,通常主线程是在这个Mode下运行 NSDefaultRunLoopMode...1.NSTimer 2.ImageView的显示 3.PerformSelector 4.常驻线程 5.自动释放池 PerformSelector - (void)touchesBegan:(NSSet

    83410

    【IOS开发高级系列】Runloop专题

    直线线程如简单的Hello World,运行打印完,它的生命周期便结束了,像昙花一现那样;圆类型的如操作系统,一直运行直到你关机。在IOS中,圆型的线程就是通过run loop不停的循环实现的。...2.2 线程与run loop的关系         Run loop,正如其名,loop表示某种循环,和run放在一起就表示一直在运行着的循环。...大多数情况下,run loop运行在默认模式下,但是你也可以使其运行在自定义模式。若某一源在当前模式下不被监听,那么任何其生成的消息只在run loop运行在其关联的模式下才会被传递。...4.6 PerformSelecter         当调用 NSObject 的 performSelecter:afterDelay: 后,实际上其内部会创建一个 Timer 并添加到当前线程的...当调用 performSelector:onThread: 时,实际上其会创建一个 Timer 加到对应的线程去,同样的,如果对应线程没有 RunLoop 该方法也会失效。

    49820

    iOS学习——浅谈RunLoop

    RunLoop的字面意思是运行循环、跑圈,一个App启动后能一直执行,就是因为启动后进入了一个循环,在这个循环中不断监听各种状态、手势动作,并做出相应的响应。...如果有了Runloop,那么相当于在内部有一个死循环,能够保证程序的持续运行 main函数中的Runloop  a 在UIApplication函数内部就启动了一个Runloop 该函数返回一个int...的生命周期:在第一次获取时创建,在线程结束时销毁 1.5 获取Runloop对象 /*1.获得当前Runloop对象*/ //01 NSRunloop NSRunLoop * runloop1...*/ 2 RunLoop相关类 2.1 Runloop运行原理图   在线程中开启RunLoop后,系统会进入一个死循环,这个循环在有事件触发时(触摸事件、定时器事件【NSTimer】、selector...DISPATCH_TIME_NOW表示从当前开始 第三个参数:定时器调用方法的间隔时间 第四个参数:定时器的精准度,如果传0则表示采用最精准的方式计算,如果传大于0的数值,则表示该定时切换

    73121

    iOS-RunLoop充满灵性的死循环

    RunLoop简介 RunLoop字面意思是跑圈,在我们的项目中其实就是运行循环,而且是充满灵性的死循环,为什么说他充满灵性呢?...所以我们创建子线程RunLoop时,只需在子线程中获取当前线程的RunLoop对象即可[NSRunLoop currentRunLoop];如果不获取,那子线程就不会创建与之相关联的RunLoop,并且只能在一个线程的内部获取其...*)event { NSLog(@"%s",__func__); // performSelector默认是在default模式下运行,因此在滑动ScrollView时,图片不会加载...Source0 启动准备好的Souecr0 如果基于端口的源Source1准备好并处于等待状态,立即启动:并进入步骤9 通知观察者线程进入休眠 将线程置于休眠直到任一下面的事件发生 改: (1)某一事件到达基于端口的源...,如果在RunLoop跑起来之后打印,RunLoop先运行起来,已经在跑圈了就出不来了,进入死循环也就无法执行后面的操作了。

    1.6K80

    iOS底层原理总结 - RunLoop

    RunLoop简介 运行循环,在程序运行过程中循环做一些事情,如果没有Runloop程序执行完毕就会立即退出,如果有Runloop程序会一直运行,并且时时刻刻在等待用户的输入操作。...); // 获得当前线程的RunLoop对象 CFRunLoopGetMain(); // 获得主线程的RunLoop对象 五....已经自动创建好了,子线程的RunLoop需要主动创建 RunLoop在第一次获取时创建,在线程结束时销毁 通过源码查看上述对应 // 拿到当前Runloop 调用_CFRunLoopGet0 CFRunLoopRef...所以我们创建子线程RunLoop时,只需在子线程中获取当前线程的RunLoop对象即可[NSRunLoop currentRunLoop];如果不获取,那子线程就不会创建与之相关联的RunLoop,并且只能在一个线程的内部获取其...,如果在RunLoop跑起来之后打印,RunLoop先运行起来,已经在跑圈了就出不来了,进入死循环也就无法执行后面的操作了。

    1.4K70
    领券