Objective-C Runtime

  • Objective-C Runtime Introduction
  • 与java的runtime有什么区别

Objective-C Runtime Introduction

The Objective-C language defers as many decisions as it can from compile time and link time to runtime. Whenever possible, it does things dynamically. This means that the language requires not just a compiler, but also a runtime system to execute the compiled code. The runtime system acts as a kind of operating system for the Objective-C language; it’s what makes the language work.
This document looks at the NSObject class and how Objective-C programs interact with the runtime system. In particular, it examines the paradigms for dynamically loading new classes at runtime, and forwarding messages to other objects. It also provides information about how you can find information about objects while your program is running.

翻译: OC语言将尽可能多的决策从编译和链接时期延迟到运行时。只要有可能,它都是动态的。这意味着该语言不仅需要编译器,还需要运行时系统来执行编译后的代码。运行时系统作为Objective-C语言的一种操作系统;它使OC语言运转。

OC采用的就是Runtime机制。对于C语言,函数的调用在编译的时候会决定调用哪个函数。对于OC函数来说,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用。

与java的runtime有什么区别

  • 运行:Objective-C runtime 运行 native code 。Java VM 运行 byte code。
  • 垃圾回收:Objective-C runtime 有过短暂的使用 conservative GC。但是 conservative GC 对于 native code,特别是经过优化的 native code 并不有效。所以目前 Objective-C 没有 GC(只有 ref-counting 的内存管理策略)。Java VM 有 generational GC。
  • 动态机制:Objective-C runtime 对 class method 的调用是通过全局名称查询。而 Java VM 是通过类似 C++ 的虚表机制。所以 Objective-C 无须 explicit interface 就能实现多态,能动态的给 class 添加方法,Java 则不行。这是很讽刺的,一个基于 byte code 的语言居然不如一个 native code 的语言动态。(Java 有 reflection 机制,但是这套机制是独立于 JVM 本身的静态调用机制的。Reflection 给予了你操作虚表的能力,但是基本的 JVM 仍然是通过虚表这个静态机制完成的。)
  • 对象:Objective-C 考虑到和 C 的交互,对象不能 relocatable。Java 的对象可以 relocate,因为没有 raw pointer 。

链接:https://www.zhihu.com/question/21218846/answer/17549601

Runtime是什么相关推荐

  1. Go 运行时(go runtime)的含义

    go 运行时,也称为 go runtime.其本身就是每个 go 程序的一部分,它会跟你的源码一起编译并连接到目标程序中.即便你只是写了一个 hello world 程序,这个程序中也包含了 runt ...

  2. Deep Learning部署TVM Golang运行时Runtime

    Deep Learning部署TVM Golang运行时Runtime 介绍 TVM是一个开放式深度学习编译器堆栈,用于编译从不同框架到CPU,GPU或专用加速器的各种深度学习模型.TVM支持来自Te ...

  3. 使用Runtime执行推理(C++)

    使用Runtime执行推理(C++) 概述 通过MindSpore Lite模型转换后,需在Runtime中完成模型的推理执行流程.本教程介绍如何使用C++接口编写推理代码. Runtime总体使用流 ...

  4. “ compiler-rt”运行时runtime库

    " compiler-rt"运行时runtime库 编译器-rt项目包括: • Builtins-一个简单的库,提供了代码生成和其他运行时runtime组件所需的特定于目标的低级接 ...

  5. runtime系统的Cello

    runtime系统的Cello 通过充当一个现代的.功能强大的runtime系统,Cello使许多以前在C中不切实际或笨拙的事情变得简单,例如: 通用数据结构 多态函数 接口/类型类 构造函数/析构函 ...

  6. 编译器设计-RunTime运行时环境

    编译器设计-RunTime运行时环境 Compiler Design - Run-Time Environment 作为源代码的程序仅仅是文本(代码.语句等)的集合,要使其活动,它需要在目标计算机上执 ...

  7. CUDA运行时 Runtime(四)

    CUDA运行时 Runtime(四) 一. 图 图为CUDA中的工作提交提供了一种新的模型.图是一系列操作,如内核启动,由依赖项连接,依赖项与执行分开定义.这允许定义一次图形,然后重复启动.将图的定义 ...

  8. CUDA运行时Runtime(三)

    CUDA运行时Runtime(三) 一.异步并发执行 CUDA将以下操作公开为可以彼此并发操作的独立任务: 主机计算: 设备计算: 从主机到设备的内存传输: 从设备到主机的存储器传输: 在给定设备的存 ...

  9. CUDA运行时 Runtime(二)

    CUDA运行时 Runtime(二) 一. 概述 下面的代码示例是利用共享内存的矩阵乘法的实现.在这个实现中,每个线程块负责计算C的一个方子矩阵C sub,块内的每个线程负责计算Csub的一个元素.如 ...

  10. CUDA运行时 Runtime(一)

    CUDA运行时 Runtime(一) 一. 概述 运行时在cudart库中实现,该库通过静态方式链接到应用程序库cudart.lib和 libcudart.a,或动态通过cudart.dll或者lib ...

最新文章

  1. IE浏览器中iframe背景BODY透明
  2. 需要排序的最短子数组长度
  3. 系统、网络运维好帮手:expect
  4. 全志 修改485转CAN串口回显 Patch
  5. ado filter 多条记录_注意!武汉江南中心绿道武九线综合管廊工程开工,青山区多条道路通行规则有变...
  6. 当心findFirst()和findAny()
  7. python visual studio pandas_pandas DataFrame索引行列的实现
  8. [原]接上-Linux环境-Jenkins实战-分布式构建-自动化持续集成(二)SVN构建及发布
  9. Android中从源码分析关于AsyncTask的使用
  10. 我的世界java版地牢种子_我的世界手机版地牢种子代码汇总
  11. [转载] python中count()、values_counts()、size()函数
  12. Kubernetes 小白学习笔记(10)--搭建一个kubernetes集群-组建节点网络
  13. autofs rhel7
  14. asp.net助学贷款管理系统案例
  15. 基于matlab的图像分割
  16. 【数学-算法】1加到100的有趣算法
  17. hive presto sql从身份证号提取年龄和性别
  18. 导弹气动估算matlab,基于Fluent的导弹气动特性计算
  19. linux下 OOB 炸弹的制作
  20. 最新安卓官方api文档完整版

热门文章

  1. 基于JAVA高考报考指南网站计算机毕业设计源码+数据库+lw文档+系统+部署
  2. IEEE 标准 802.1Qbv™-2015
  3. 搭建个人移动图书馆——Calibre-web
  4. 04. JavaMail 查询/读取邮件
  5. python var是什么意思_python3函数里var是什么意思?
  6. matlab fm非相干解调,FM调制和相干解调,非相干解调.pdf
  7. 使用three.js模拟地球效果
  8. 面包屑导航:最佳做法和示例
  9. 桌面运维用到的网站(转载)
  10. 傅立叶变换在图像处理中的应用