这是我参与「第四届青训营 」笔记创作活动的的第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…