首页
学习
活动
专区
工具
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...方法 监控应用卡顿 性能优化

44920
  • RunLoop数据结构、RunLoop实现机制、RunLoopMode、RunLoop与NSTimer和线程

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

    63240

    iOS面试题:RunLoop剖析

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

    84220

    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 // 同上面的方法一样,只不过返回是该线程调用函数名字数字

    69210

    Runloop(4):应用

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

    28420

    线程(一):NSThread

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

    33520

    iOS 多线程-Thread

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

    94720

    NSRunLoop-iOS中隐藏大杀器

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

    1.1K10

    RunLoopiOS开发中应用

    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.5K100

    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

    82610

    【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 该方法也会失效。

    46120

    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数值,则表示该定时切换

    72721

    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

    再谈RunLoop

    RunLoop 一 概述: 一句话解释RunLoop:运行任务循环。 为什么要有RunLoop:解决交互式UI设计中一个问题,如何快速响应用户输入,如何快速将程序运行结果输出到屏幕?...所有起点是UI代码, 除非明确指明运行在其他线程 (通过类似performOnBackground, performSelector:onThread: 等方式),否则都是运行在主线程runloop... 不要在runloop中运行些“大任务”,比如循环个十万二十万次或者其他什么东西, 因为 你实际使用和UI相同线程。...插队这种现象其实很常见,每次当你一个函数里面调用 - [NSRunloop runMode:beforeDate:] 这个方法时, 实质就是在打断当前runloop任 务执行,转而执行runloop...当调用 performSelector:onThread: 时,实际其会创建一个 Timer 加到对应线程去,同样,如果对应线程没有 RunLoop 该方法也会失效。

    70141

    iOS底层原理总结 - RunLoop

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

    1.4K70
    领券