OC在运行时对动态语言意味着什么?什么是动态识

  • 动态:
    主要原因是将数据类型决策从编译时延迟到运行时。
    与此问题相关的两个问题是执行时间和多态性。
    简而言之,运行时机制允许您在运行时确定对象的类,并调用该类对象的规范方法。
    让我们考虑一下OC语言的动态特性。
    的OC,动态型的动态特性,通过动态链接,和动态负载的三个方面来表示。
    它被称为动态,因为它需要在运行时执行。
    (1)动态类型
    动态类型,简单点是标识的类型。
    动态类型与静态类型有关。
    显式原始类型(如内部类型)是静态类型(int,NSString等)。
    可以在编译时识别静态类型。
    因此,如果程序没有响应该类型,编译器会发出警告。
    编译编译器时无法识别动态类型,但您需要等到运行时。换句话说,根据执行程序时的上下文来识别它。
    因此,有两个概念要区分。它是编译时和运行时。
    Idobj = someInstance;
    是的([objisKindOfClass:someClass]){
    someClass * classSpecifiedInstance =(someClass *)obj;
    (2)动态链接
    动态链接似乎很难记住,但事实上它很简单。请记住关键字@ selector / SEL。
    我们来看看这个功能吧。在其他静态语言(如C ++)中,被调用函数函数的签名通常在编译时传递给编译器。
    静电,无法改变。
    在OC中,实际上没有功能概念。我们称之为消息机制。所谓的函数调用是向对象发送消息。
    此时,将出现动态链接功能。
    OC首先省略编译,并在执行期间动态添加对函数的调用。确定在运行时调用的方法和要传递的参数。
    这是一个动态链接。要实现它,您需要将方法与SEL变量链接。
    生成的SEL变量表示对方法的引用。
    这里需要注意的是SEL不是C函数指针。这非常相似,但不是函数指针。
    SEL变量只是一个整数。这是方法ID,@ selector()是类方法编号。
    之前对该函数的调用是根据函数名称(即字符串)查找函数体。
    但现在我们正在寻找基于ID整数的方法。整数搜索术语比字符串搜索快得多。
    因此,动态链接的特殊性更方便,但也更有效。
    由于OC的动态特性,OC中很少提及功能的概念。传统函数通常是OC中最常用的函数,将参数信息和函数实现分组为编译时编译的源代码,这是消息机制。
    调用实例方法时要做的是向实例指针发送消息。在收到消息后,实例会从其实现中查找对消息的响应。
    (3)动态负载
    很容易理解如何根据您的要求加载所需的资源。对于iOS开发,它基本上适应不同的模型。
    最经典的示例是将@ 2 x图像加载到Retina设备上,并将原始图像加载到旧的普通屏幕设备中。

发表时间:2019-02-12

相关文章

VR怎么样?你想学习吗?
【Zmce商品交易】zmce商品交易价格
1 kb的存储容量为1000字节。
[九舒冠博士浓度改善版舒硕凝结手足关节疼痛类
[HP M252 dw]估计
“说官[文艺复兴]”天武宝
为什么秘鲁的秘密?
OC在运行时对动态语言意味着什么?什么是动态识
Milican油滴实验
[数控工具配件合金刀垫22IR STM22L内螺纹刀]价格