为什么说 Object-C 是动态语言?

为什么说 Object-C 是动态语言?

前言

为什么写这篇文章

干了有一段时间的iOS了,今天看公众号推送了一篇关于面试题的文章,很多基础问题都不知道怎么回答,看网上的答案都不怎么通俗,太书面了,我决定以口头表达的方式整理这些回答。
参考链接,为什么说 Object-C 是动态语言?

什么是动态语言?

动态语言就是,程序在运行时可以改变,可以加新的(函数),可以替换和删除旧的。

https://www.jianshu.com/p/b1a6be1bdc87 这篇文章中提到,动态语言可以理解为两种:

  • 动态语言:(Dynamic programming Language -动态语言或动态编程语言
  • Dynamically Typed Language(动态类型语言)所谓的动态类型语言,就是类型的检查是在运行时做的。

其实没有一个动态语言的标准,只是相对静态的而言,只要是在运行时可以修改的,都可以理解为动态语言。

回答

Object-C 将很多事放到了运行时来处理。为了实现这样的工作,Obejct-C 提供了 Objc Runtime 机制来动态创建类和对象,进行消息发送和转发。

哪些事

  • 动态类型 - 运行时再决定对象的类型(id类型就是最直接的体现)
  • 动态绑定 - 对象类型确定后才将属性和消息(函数)与对象绑定。
  • 动态加载 - 动态加载所需资源,比如@2x图片。

这里已经可以回答本文的问题了。但是这并没有什么知识点,真正的知识点还得接着学。Runtime主要做了哪些事,还是回原文章看吧。

记得刚毕业的时候跟同学一起去面试,面试官问了我几个技术问题我就败下阵来,同学比我厉害,面试官问了他好几个问题,回答完接着深入问,一直问道回答不上来。最后面试官告诉他,“要一直问到你回答不上来,或者我也不知道”,这样才能知道你到底了解多少。知识是无穷无尽的,一个runtime可能面试官会问很深很深,我自然是了解的不深,以后一定多加学习。

你可能感兴趣的:(为什么说 Object-C 是动态语言?)