OC的理解与特性
1)OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装、继承、多态。它既具有静态语言的特性(如C++
),又有动态语言的效率(动态绑定、动态加载等)。总体来讲,OC确实是一门不错的编程语言。
2)Objective-C具有相当多的动态特性,表现为三方面:
动态类型(Dynamic typing)、动态绑定(Dynamic binding)和动态加载(Dynamic loading)。动态——必须到运行时(run time)才会做的一些事情。
解释:
静态语言 :静态类型语言的数据类型是在编译期间检查的,也就是说在写程序时
要声明
所有变量的数据类型。C/C++
是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
动态语言:是指在运行期间
才去做数据类型检查的语言。也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反,一个变量可以赋不同数据类型的值。
动态类型:即运行时再决定对象的类型,这种动态特性在日常的应用中非常常见,简单来说就是id类型。事实上,由于静态类型的固定性和可预知性,从而使用的更加广泛。静态类型是强类型,而动态类型属于弱类型,运行时决定接受者。
动态绑定:基于动态类型,在某个实例对象被确定后,其类型便被确定了,该对象对应的属性和响应消息也被完全确定。
动态加载:根据需求加载所需要的资源,最基本就是不同机型的适配,例如,在Retina
设备上加载@2x
的图片,而在老一些的普通苹设备上加载原图,让程序在运行时添加代码模块以及其他资源,用户可根据需要加载一些可执行代码和资源,而不是在启动时就加载所有组件,可执行代码可以含有和程序运行时整合的新类。