runtime和runloop的个人理解

本文介绍了RunTime机制,包括消息发送原理及Objective-C与C语言的区别,并深入探讨了RunLoop的作用,如保持线程运行状态、事件处理机制以及如何在不同线程中正确使用RunLoop。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

RunTime简称运行时。就是系统在运行的时候的一些机制,其中最主要的是消息机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数( C语言的函数调用请看这里 )。编译完成之后直接顺序执行,无任何二义性。OC的函数调用成为消息发送。属于动态调用过程。在编译的时候并不能决定真正调用哪个函数(事实证明,在编译阶段,OC可以调用任何函数,即使这个函数并未实现,只要申明过就不会报错。而C语言在编译阶段就会报错)。只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。

 

没有runloop程序就启动不了

 

RunLoop运行循环 让线程一直处于运行状态,当有事件的时候,激活线程并处理事件,没有事件的时候让线程处于休眠状态节约cpu提高程序性能。主线程的runloop默认创建,子线程需要主动创建。 

什么情况下用runloop,定时器nstimer 和某些特定的函数;nstimer在主线程中执行就不需要自己创建runloop,在非主线程中执行就需要手动开启runloop,否则子线程执行完了之后就就退出线程,导致定时器没法正常工作;perfomselector(消息传递),延时操作

转载于:https://www.cnblogs.com/jezhuang/p/6859074.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值