Xcode简介 | 青训营笔记

159 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的的第1天。

今天老师带我们入门了Xcode和Objective-C,对Objective-C还没有特别熟悉,所以先通过老师讲解和相关文章课外资料等整理出了Xcode部分,明日整理出OC part。由于是第一次写,今日的笔记自己的思考还不够,多数都是上课内容和课外资料整理,明日开始会多加入自己的思考!

Xcode简介

🔨Xcode

Xcode工程体系

  • Workspace: Xcode 提供的一个工作空间,分为多个project(工程核心),组合成一个庞大且复杂的工程

  • Project:工程核心,管理源代码,资源文件,添加其他三方库等,一个project包含多个target(构建目标)

    • project本质是.pbxproj 后缀文件,被包含于 Xcode 工程文件 *.xcodeproj 之中,存储着 Xcode 工程的各项配置参数

    • 一般格式如下: 数组用小括号括起来并用逗号隔开元素;字典用大括号括起来并用分号隔开键值对,键值之间用等号连接;二进制数据用尖括号括起来

      • 五个键值对

        前三个固定 后两个重要
        archiveVersion  //=1
        classes  //={};
        objectVersion //=46 
        objects   
        rootObject 
        
      • rootObject函数(类似一个入口函数),顺着它各个属性对应的UUID在objects中找到对应的对象,然后一层层看下去,具体的配置实现在objects域里,每一项又是一个字典,key是UUID,Value依然是字典。rootObject对应的value也可以在objects中找到具体的值。

        • UUID(Universally Unique Identifier 通用唯一识别码)类似指针

          UUID 根据机器硬件和时间戳生成,project文件使用UUID 作为交叉引用的索引,保证每个配置信息对象的唯一性,避免了同时修改工程文件的问题。

          每个对象都有唯一的UUID,其他配置对象想引用某配置对象直接使用UUID。

      • objects 中的键值对被分成了若干个 section,section 的顺序是 Xcode 私有 API 确定的,但每个 section 内部的键值对会根据 Key 的字典序排列,增加可读性。

    • 参数

      • 对文件的引用

        • 原代码,.m / .h / .cc / .swift... 等等
        • 资源文件
        • Framework, Library
      • 包含的Target
      • 构建配置
  • Target:特定的构建目标,App主体为目标/命令行工具/代码二进制库

    • 详细定义了Project中的一批文件到构建出一个Product的整个过程
    • 定义了构建系统的所有输入和文件的处理配置,构建系统的输出就是Product
    • 处理配值指的则是 Target的Build Settings 和 Build Phases
    • 可以设置依赖关系,被依赖方优先执行依赖方
  • Product:运行结果,每个target都可以从隶属的project中圈出源代码文件/资源文件,基于build phase/build configuration等执行构建得到target对应product

🌰举个例子

老师上课举了一个例子,我觉得很形象:

创建了一个食品工厂(Workspace & Project),然后你创建一个鸡块生产线(Target),生产线的输入是鸡肉,淀粉,食用油(Input File, 资源文件),你需要设置搅拌速度,油温和处理顺序(Build Settings, Build Phases),最后你按下机器运行(Build & Run),就会得到产物麦乐鸡块(Product)你还可以依赖本工厂(Workspace & Project)其他生产线的产物,例如酱料(Other Target & Product),编译器会自动排列编译的顺序。

引用文章

【iOS 客户端专场 学习资料一】第四届字节跳动青训营 juejin.cn/post/712271…
Xcode工程文件project.pbxproj小结 www.jianshu.com/p/e82ec6a56…