JHHK

欢迎来到我的个人网站
行者常至 为者常成

OC是动态语言

目录

Objective-C是一种动态语言,但它也具有静态语言的一些特性。
以下是对Objective-C动态性和静态性的详细解释:

语言的动态特性

动态类型检查

变量的类型可以在运行时检查和改变。

比如 id 类型

id dynamicObject = [SomeClass new];
if ([dynamicObject isKindOfClass:[SomeOtherClass class]]) {
    // Do something with dynamicObject
}

比如:多肽

动态方法分派

方法调用在运行时决定,而不是在编译时绑定。(这意味着你可以在运行时改变方法的实现或者替换方法。)
使用消息传递机制,而不是直接的函数调用(函数地址调用)

[receiver performSelector:@selector(methodName) withObject:argument];

比如:方法交换

反射:

可以在运行时检查和修改对象的结构和行为
比如:查询所有的属性和方法
比如:方法交换
比如:动态添加方法

语言的静态特性

编译时类型检查:

尽管有动态特性,Objective-C也支持编译时类型检查,特别是当使用显式类型声明时。

静态绑定:

尽管属性的存取方法和类方法调用也是通过消息发送机制实现的,
但编译器可以对这些方法调用进行优化,使其在编译时确定调用目标,从而提升性能。


行者常至,为者常成!





R
Valine - A simple comment system based on Leancloud.