1. 为什么说Objective-C是一门动态的语言?

整个《面试题》都是对2017年6月iOS招人心得(附面试题)的整理。

1.解释动态语言、静态语言

动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。Objective-C虽然在写程序时声明了变量的数据类型,但是在编译期间并没有检查。因为Objective-C类和对象都是在运行时候创建的,所以编译期间没办法检查。
  总结::两者的区别在于是否在编译期间做数据类型检查。

2.OC是动态语言的原因

Objective-C 是C 的超集,在C 语言的基础上添加了面向对象特性,并且利用Runtime 这个运行时机制,为Objective-C 增添了动态的特性。
  
  Objective-C 可以通过Runtime 这个运行时机制,在运行时动态的添加变量、方法、类等,所以说Objective-C 是一门动态的语言。
  
  Objective-C 使用的是 “消息结构” 并非 “函数调用”:使用消息结构的的语言,其运行时所应执行的代码由运行期决定;而使用函数调用的语言,则由编译器决定。
  
  总结:OC利用Runtime可以在运行的时候创建类,修改类,修改对象调用的方法。

    原文作者:豆丶浆油条
    原文地址: https://www.jianshu.com/p/f5e48dde7bd7
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞