我对Objective-C中的动态类型如何工作感兴趣.我一直在研究"id"类型,我知道它的作用以及如何使用它,但我很好奇......这些功能如何在引擎盖下实现?
在编译期间,仅在运行时期间无法确定/解决任何问题.我想它可以简单地指向内存中某个对象的第一个字节,但是如何存储类签名?它是如何知道它当前指向的是什么以及它如何为尖头对象的类实现各种getter?
我听说过Objective-C是C的正确超集,但是客观的C 2.0?
我问的原因是它不是,或者我误解了"正确的超集"这个短语,因为这段代码是有效的C语法:
#import <stdio.h>
int main () {
char *nil = "hello";
printf("%s\n",nil);
}
Run Code Online (Sandbox Code Playgroud)
但是不能在Objective-C 2.0中编译.显然,这是一个容易解决的问题,但我正在写一篇论文,并认为这是应该指出的.