一:类,对象,属性

1. Swift编译简介:

  1. iOS开发的语言不管是OC还是Swift后端都是通过LLVM进行编译的;
    如下图所示:

    image.png

  2. OC通过clang编译器,编译成IR, 然后再生成可执行文件.o(这里也就是我们的机器码)
    Swift则是通过Swift编译器编译成IR,然后再生成可执行文件.
    下面是Swift文件的编译过程:

    image.png

  1. Swift在编译过程中使用的前端编译器是Swiftc, 和我们之前在OC中使用的Clang还是有所不同的;用swiftc -h查看他能干什么:
    image.png

2. SIL(Swift intermediate language)

1. 了解SIL:

SIL参考文档
SIL参考视频:“Swift's High-Level IR: A Case Study..."没字幕..

image.png
  • @mail 这里标识我们当前main.swift的入口函数,SIL中的标识符名称以@作为前缀
  • %0, %1...在SIL也叫寄存器,可以理解为我们日常开发中的常量,一旦赋值之后就不可以在修改,如果SIL中还要继续使用,那么就不断的累加数字.同时这里所说的寄存器时虚拟的,最终运行到我们的机器上,会使用真的寄存器.
  • alloc_gobal创建一个全局变量
  • global_addr拿到全局变量的地址,赋值给%3
  • metatype拿到LGTeacherMetadata赋值给%4
  • __allocating_init的函数地址赋值给%5
  • apply调用__allocating_init,并把返回值给%6
  • 将%6的值存储到%3
  • 构建Int,并return

你可能感兴趣的:(一:类,对象,属性)