美文网首页
oc是一门什么样的语言以及runtime

oc是一门什么样的语言以及runtime

作者: Corbin___ | 来源:发表于2018-04-05 16:03 被阅读0次

oc是一门什么样的语言以及runtime

oc介绍

oc很古老,使用上没有java,swift点语法的酸爽,而是中括号,冗长的命名,可以说oc不是一门简洁的语言

oc的最大特点,就是动态性,与c++静态语言不同,静态语言可以在编译的时候就确定

  • 对象的类型
  • 调用方法是跳那个地址执行什么指令
  • 各种数据结构

而动态语言,在编译时,无法确认这些,而是在程序运行时动态的去确定,比如经常听到的动态类型,动态绑定,动态加载

  • 动态类型
// 编译的时候,根据声明顶多知道f是Father类型,但是这个是错误的,所以当我们打程序跑起来,po下f,会是Son类型

// 这就是动态类型了,在运行中才去确定这个指针的类型
Father *f = [Son new];
  • 动态绑定

动态绑定是基于动态类型的,确定了类型,就确定了数据结构,才会动态的绑定上这个类对应的属性,方法

  • 动态加载

动态加载资源,根据不同的机型加载@1x @2x @3x图

可以看下这个文章

用户在 app store 上看到的包大小究竟是什么?

oc怎么做到动态

既然他作为一门动态语言,那么在编译的时候,他应该想办法把将静态语言在编译期确定的事情推迟到运行期

那么这个仅仅靠编译器是不够的,他需要一个运行时系统runtime,这个就是runtime存在的意义,给oc提供动态性,是oc运行框架的基石

oc和runtime的交互

平时我们编写的oc代码,类(NSObject,UIKit等),方法调用(rumtime消息转发),协议,分类等,这一切的oc类,oc特性都是runtime实现的。比如oc的类,本质上就是runtime对应的一些结构体

所以我们经常听到黑魔法,其实所谓的runtime黑魔法,只是基于OC各种底层数据结构上的应用

所以想要了解runtime,我们应该先从runtime是怎么定义类,定义对象,这些数据结构开始

runtime的各种数据结构

相关文章

  • oc是一门什么样的语言以及runtime

    oc是一门什么样的语言以及runtime oc介绍 oc很古老,使用上没有java,swift点语法的酸爽,而是中...

  • Runtime-消息三步处理机制

    Runtime 方法调用本质 OC是一门runtime语言,OC调用方法的实际,其实就是消息转发,我们可以通过底层...

  • RunTime --> ISA指针

    RunTime OC是一门动态性比较强的编程语言,和C,C++等语言有很大的不同. OC的动态性是由Runtime...

  • iOS基础 Runtime-isa (1)Runtime-isa

    Runtime 基础 (1)isa详解OC是一门动态性比较强的编辑语言,OC的动态性是由Runtime API来支...

  • 我理解的runtime

    OC Runtime 对OC的理解与特性 OC是一门面向对象语言,既有静态语言的特性(C++),又有动态语言的特性...

  • runtime

    Runtime 什么是Runtime OC是一门动态性比较强的编程语言,允许很多操作推迟到程序运行时再进行 OC的...

  • 07-OC中Runtime方法缓存

    OC中Runtime的基本概念: Runtime是OC中的运行时机制,之所以说OC是一门动态性语言,这也正是因为有...

  • Runtime — 消息发送

    一、Runtime 1. Runtime介绍 Objective-C 是一门动态语言,而承载整个 OC 动态特性的...

  • iOS runtime详解一

    RunTime是什么? 众所周知OC是一门高级编程语言,也是一门动态语言。有动态语言那也就有静态语言,静态语言--...

  • iOS runtime运行时的作用和应用场景

    Runtime是什么?   众所周知OC是一门高级编程语言,也是一门动态语言。有动态语言那也就有静态语言,静态语言...

网友评论

      本文标题:oc是一门什么样的语言以及runtime

      本文链接:https://www.haomeiwen.com/subject/rmulhftx.html