Objective-C如何提供动态运行时?

Cod*_*der 13 binding dynamic objective-c

Objective-C如何提供"动态"运行时?"动态"在这里指的是什么?

Nik*_*uhe 20

在一句话中:Objective-C决定在这样做之前调用哪个方法实现(在运行时).这个想法是方法名称实现之间的联系是动态的.例如,C++在编译期间执行此操作.

例:

id object = @"1";
int i = [object intValue];

object = @1;
i = [object intValue];
Run Code Online (Sandbox Code Playgroud)

在此示例中,intValue消息首先发送到实例,NSString然后发送到NSNumber.编译器发出的代码对于两个调用都是相同的 - 实际上编译器甚至不知道它向哪个对象发送消息(如类型所示id).

运行时决定调用哪个实现从字符串或者提取int值NSNumber.