美文网首页
OC语言的动态特性

OC语言的动态特性

作者: 单线程Jack | 来源:发表于2019-07-17 14:19 被阅读0次

OC的动态特性表现为了三个方面:动态类型、动态绑定、动态加载。之所以叫做动态,是因为必须到运行时(run time)才会做一些事情。

(1)动态类型

动态类型,说简单点就是id类型。动态类型是跟静态类型相对的。像内置的明确的基本类型都属于静态类型(int、NSString等)。静态类型在编译的时候就能被识别出来。所以,若程序发生了类型不对应,编译器就会发出警告。而动态类型就编译器编译的时候是不能被识别的,要等到运行时(run time),即程序运行的时候才会根据语境来识别。所以这里面就有两个概念要分清:编译时跟运行时。

(2)动态绑定

动态绑定(dynamic binding)貌似比较难记忆,但事实上很简单,只需记住关键词@selector/SEL即可。先来看看“函数”,对于其他一些静态语言,比如c++,一般在编译的时候就已经将将要调用的函数的函数签名都告诉编译器了。静态的,不能改变。而在OC中,其实是没有函数的概念的,我们叫“消息机制”,所谓的函数调用就是给对象发送一条消息。这时,动态绑定的特性就来了。OC可以先跳过编译,到运行的时候才动态地添加函数调用,在运行时才决定要调用什么方法,需要传什么参数进去。这就是动态绑定,要实现他就必须用SEL变量绑定一个方法。最终形成的这个SEL变量就代表一个方法的引用。这里要注意一点:SEL并不是C里面的函数指针,虽然很像,但真心不是函数指针。SEL变量只是一个整数,他是该方法的ID。以前的函数调用,是根据函数名,也就是字符串去查找函数体。但现在,我们是根据一个ID整数来查找方法,整数的查找字自然要比字符串的查找快得多!所以,动态绑定的特定不仅方便,而且效率更高。

(3)动态加载

比如图片的动态加载:

就是把图片(或者图片路径)存在数据库里,在要显示图片的地方,从数据库里调出图片来显示出来,
由于数据库随时在更新,图片就会不一样,就称为动态就是根据需求动态地加载资源。

相关文章

  • 我理解的runtime

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

  • 面试总结

    1、OC是一门面向对象语言,但是它既有静态语言的特性,又有动态语言的效率。OC中的动态特性体现在OC中的RunLo...

  • oc的运行期环境(runtime)

    oc语言的动态特性 oc语言的动态特性来自ObjC Runtime ,其实是一个 runtime 库,基本上用 C...

  • 面试总结

    OC的理解与特性 . OC是一门面向对象的语言,三大特性:封装 继承 多态。静态语言特性(C++),动态语言的效率...

  • 面试技巧攻克-OC高级特性

    一、runtime机制 1、什么是runtime? runtime是OC的重要特性,使得OC语言具有动态的特性,动...

  • iOS 面试集锦

    1. OC 语言的优缺点 优点: category posing 动态特性runtime: 函数实现 IMP 动态...

  • 各种Hook框架的理解

    非越狱环境: OC的runtime特性,来动态替换修改oc类的方法,但仅能针对OC语言 fishhook fac...

  • OC语言的动态特性

    动态类型Dynamic typing-determining the class of an object at ...

  • OC语言的动态特性

    OC的动态特性表现为了三个方面:动态类型、动态绑定、动态加载。之所以叫做动态,是因为必须到运行时(run time...

  • iOS的消息机制

    一、OC语言的特性 首先,想要了解iOS的消息发送机制,我们需要先理解OC这门语言。相较于静态语言而言,动态语言是...

网友评论

      本文标题:OC语言的动态特性

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