runtime和runloop的个人理解

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

没有runloop程序就启动不了

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

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

时间: 2024-12-25 01:32:25

runtime和runloop的个人理解的相关文章

iOS runtime和runloop

runtime 和 runloop 作为一个程序员进阶是必须的,也是非常重要的, 在面试过程中是经常会被问到的, 所以大家有必要进行研究,有能力的童鞋可以和下面作者一样, 亲历实践一下. 在简书里发现了两篇非常好的文章介绍 runtime和runloop的,在这里合二为一了, 把原版作者的东西拿了过来, 为了尊重作者,在这里注明一下 @sam_lau 是runtime的作者, @tripleCC是runloop的作者   RunTime Objective-C是基于C语言加入了面向对象特性和消息

linux runtime pm机制的深入理解

一:runtime机制说明 何为runtime机制?也就是系统在非睡眠状态,设备在空闲时可以进入runtime suspend状态同时不依赖系统wake_lock机制,非空闲时执行runtime resume使得设备进入正常工作状态. 主要代码放在Runtime.c (drivers\base\power)中,同时附带的Runtime_pm.txt (documentation\power)有详细 说明.要使得设备可以进入runtime_idle与runtime_suspend必须满足devic

Runtime of Objective-C 2-理解oc中的类和对象

1: 类Class:       typedef struct objc_class * Class;     从Class的定义可以看出,它是一个 objc_class 结构类型的指针,objc_class又是什么呢? struct objc_class { struct objc_class* isa; struct objc_class* super_class; //root的为null const char* name; long version; long info; long in

Runloop之个人理解

Runloop之个人理解更像是一种线程等待机制,传统线程的消息传入机制,线程收到什么样的消息,就执行什么样的动作,如果是信号量队列型的,其实就基本实现了线程在无消息时挂住休眠;而不是在每隔一段时间就要转起来动作下.这样在移动设备上节省下来的电力就相当可观了. Runloop更大功用就在此,一是以OC的形式实现了线程的消息中断机制.二来,消息优先级是可以设置的,高优先级的消息会在消息循环重新开始时被首先取到(这就对应了Runloop的Mode)这是理论,下面通过例子来描述怎么用.

Runtime和Runloop的区别

一.RunLoop: Runloop是事件接收和分发机制的一个实现. Runloop提供了一种异步执行代码的机制,不能并行执行任务. 在主队列中,Main RunLoop直接配合任务的执行,负责处理UI事件.定时器以及其他内核相关事件. (1).RunLoop的主要目的: 保证程序执行的线程不会被系统终止. (2).什么时候使用Runloop ? 当需要和该线程进行交互的时候才会使用Runloop. 每一个线程都有其对应的RunLoop,但是默认非主线程的RunLoop是没有运行的,需要为Run

RunLoop的简单理解笔记

一句话解释RunLoop:运行任务的循环. 为什么要有RunLoop:解决交互式UI设计中的一个问题,如何快速响应用户输入,如何快速将程序运行结果输出到屏幕? 基本原理:1 将任务分解的足够细 2 每个任务运行的时间足够短. 计算机是个笨蛋,同一个时间里只能做同一件事情.要么处理计算任务, 要么轮询各种I/O 接口. 那么,在没有线程的情况下,如何在计算的同时, 又能够轮询各种I/O接口,以迅捷的 和用户交互呢? CS的科学家给出的答案是:看起来够迅捷就行.人的反应速度是有上限的, 因此只要把

iOS开发--1.对runtime的理解和整理

在我以往的面试中常常会被问到runtime,开始本人其实对runtime只是个简单的了解,用过一些常用的功能,并未仔细研究.不过看来现在iOS开发越来越关注runtime了,所有工作之余仔细查看了一些大牛的博客.本篇文章只是对一些大牛博客的整理,还有一些自己对runtime的不成熟的理解,只是为了方便学习.希望大家多多指点批评 附带上大牛博客:onevcat的博客:runtime的博客 一:基本概念 Runtime简称运行时,基本是用汇编和C语言编写的,只是苹果为了动态系统的高效而作出的努力.点

GCD API 理解 (一)

资料先行 GCD 深入理解:第一部分 GCD 深入理解:第二部分 以上两篇文章是关于GCD讲的比较好的文章,翻译自raywenderlich,该网站有很多关于iOS 开发的优秀文章. 引子 iOS 开发中有三大进阶性的技术点,分别是GCD.runtime 和runloop.其中GCD用的最多,runtime也有不少使用场景,runloop在系统的API里体现的比较多,项目里实际使用比较少. 一直都想就这三个技术点做一些总结,没事的时候可以回来复习巩固一下,可是记录了很多要写的点,但是文章却是一拖

Runtime ----- 带你上道

在IOS开发和学习过程中,我们经常会接触到一个词: Runtime  .很多开发者对之既熟悉又陌生,基本都是浅尝辄止,达不到灵活使用的水平(话说开发中也确实不经常用..)本文和大家一起研究一下,Runtime到底是什么,还有他的一些应用场景,毕竟Runtime是OC动态特性的核心,熟练掌握它可以帮助我们更好的控制类的属性及方法,编写出更高效的代码. 一.什么是Runtime  不管你之前如何理解的Runtime,先把他扔一边,我们从头梳理一下: 1.有一种大气而准确的说法 : Objective