ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 网络编程 >> IOS开发 >> Objective-C的本质

Objective-C的本质(1/4)

来源:网络整理     时间:2018-05-20     关键词:

本篇文章主要介绍了" Objective-C的本质",主要涉及到方面的内容,对于IOS开发感兴趣的同学可以参考一下: 众说周知,我们平时编写的OC代码,底层都是C/C++实现的我们可以通过一个终端指令,将我们的OC代码转换成C/C++代码xcrun -sdk iphoneos ...

众说周知,我们平时编写的OC代码,底层都是C/C++实现的

我们可以通过一个终端指令,将我们的OC代码转换成C/C++代码

xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc 文件名 -o 输出的CPP文件

例如:

xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main.cpp

思考一:OC的对象、类都是基于C/C++什么数据结构实现的??

首先看下面代码:

#import 
#import @interface Student : NSObject
{
    @public
    int _age;
    int _no;
}
@end

@implementation Student
@end

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Student *stu = [[Student alloc] init];
      
        stu->_age = 4;
        stu->_no = 5;
       
        NSLog(@"%@", stu);
      
        NSLog(@"%zd", class_getInstanceSize([NSObject class]));
        NSLog(@"%zd", class_getInstanceSize([Student class]));
    }
    return 0;
}

通过终端命令生成.cpp文件

xcrun -sdk iphoneos clang -arch arm64 -rewrite-objc main.m -o main.cpp

我们发现Student和NSObject的底层实现代码如下:

相关图片

相关文章