Objective-C Runtime
Objective-C Runtime Programming Guide
Objective-C Runtime Decumentation
Objective-C 是一个动态语言,这意味着它不仅需要一个编译器,也需要一个运行时系统来动态得创建类和对象、进行消息传递和转发。
高级编程语言想要成为可执行文件需要先编译为汇编语言再汇编为机器语言,机器语言也是计算机能够识别的唯一语言。
使用OC进行面向对象开发,而C语言更多的是面向过程开发,这就需要将面向对象的类转变为面向过程的结构体。
代码示例
OC代码
Person *person = [[Person alloc] init];
person.name = @"devZhang";
[person work];
结果
2018-07-06 23:28:56.830116+0800 DemoRuntime[1283:47034] [Person]devZhang is working now~
runtime运行时
Class class = objc_getClass("Person");
Person *obj = ((id (*)(id, SEL))objc_msgSend)(class, @selector(alloc));
Person *person = ((id (*)(id, SEL))objc_msgSend)(obj, @selector(init));
((void (*)(id, SEL, NSString *))objc_msgSend)(person, @selector(setName:), @"iOSDev");
((void (*)(id, SEL))objc_msgSend)(person, @selector(work));
结果
2018-07-06 23:23:40.357450+0800 DemoRuntime[1238:44521] [Person]iOSDev is working now~