转自:
http://blog.csdn.net/chinahaerbin/article/details/7972935
在Xcode编译一个应用程序需要几个步骤,也称为构建阶段(Build Phases),有如下几个build phase,如下图所示:
1) 编译源文件(Compile Sources)
这个阶段编译所有的源文件;默认情况下,项目中添加任何一个源文件,也将添加到编译列表中。
2) 连接二进制文件和库(Link Binary With Libraries)
在完成源文件的编译之后,连接框架(或库),这样代码就可以使用这些框架类了。
3) 复制绑定资源(Copy Bundle Resources)
在源文件编译和连接库之后,创建一个可执行文件,并放置在应用程序的绑定中,其实就是一个文件夹。其中资源文件将和可执行文件一起添加到绑定(bundle)中。这些资源文件是数据文件,应用程序在运行时需要使用,如XIB 文件和图像文件、声音文件等等。默认情况下,添加到项目中的文件,如不是源代码文件,将添加到这个构建阶段(Build Phase)。
一般情况下,在Compile Sources阶段,将发现错误,但有时也会在Link Binary With Libraries 阶段出现错误。在这些阶
段出现的错误,一般容易诊断和纠正。
预处理(Preprocessing)
Compile Sources 构建阶段分为两步:预处理(Preprocessing)和编译(Compiling)。预处理阶段的目标是为每一个实现文件(.m)创建中间文件(intermediate file)。中间文件仍然类似实现文件的Objective-C代码,但是中间文件会变得非常大。
在创建中间文件时,预处理器负责处理实现文件(.m)中所有的预处理指令(preprocessor directives)。预处理指令是所有以 # 开头的语句,如 #import。#import 语句将替换为实际引用文件的内容。
例如,一个实现文件 ***.m 引用了 ***.h 头文件;为 .m 创建的中间文件将包含 ***.h和 ***.m文件。还不止这些,并且 ***.h 头文件引用了其他 2 个文件 UIKit.h和CoreLocation.h,还有可能这 2 个文件引用了其他的头文件 .h,这些头文件将全部包含在该实现文件***.m 创建的中间文件中(intermediate file)。
下图是预处理创建的中间文件(intermediate files):
编译(Compiling)
一旦预编译(Preprocessor)完成之后,接着编译生成的中间文件(intermediate files),编译中间文件 – Objective-C 代码,生成机器码(machine code)。机器码存放在对象文件(object file)中,一个中间文件对应一个对象文件。
编译阶段,也就是将Objective-C 代码文件转为机器码,将检测多数编译错误。当编译器不理解我们编写的代码时,将报错。我们称之为编译错误或语法错误。
连接(Linking)
编译生成的对象文件(object file)包含了实现文件(implementation file)的机器码。在一个实现文件中,可以调用其他实现文件的方法。此时,并不会将其他实现文件的代码复制到本实现文件中,而是连接其他实现文件。连接二进制文件和库(Link Binary With Libraries)就是负责此项任务,我们简称连接阶段(linking phase)。
编译阶段生成对象文件(object file);连接器解析连接;如下图所示:
如果连接无法解析(可能因为没有找到对象文件包含的代码,或者因为对象文件没有包含引用的代码),将抛出连接错误(linker error)。对于新的开发人员而言,连接错误比较难理解,因为他们不熟悉这些术语,同时也没有对应产生错误的代码行。需要在实践中总结经验。
下面是将一个引用的CoreLocation.framework 框架删除之后,出现的连接错误:
- 大小: 277.7 KB
- 大小: 192.5 KB
- 大小: 115.2 KB
- 大小: 265.2 KB
分享到:
相关推荐
以下是对"IOS应用源码——应用程序密码锁"相关知识点的详细说明: 1. **用户界面设计**:在iOS应用中,密码锁界面一般包含输入框(用于输入密码)和相关按钮(如“解锁”、“忘记密码”等)。设计师会遵循Apple的...
标题中的“IOS应用源码——应用程序密码锁.zip”表明这是一个关于iOS平台的移动应用源代码,专注于实现一种应用程序密码锁定功能。这个应用可能是为了保护用户的隐私和数据安全,通过设置密码来限制他人对特定应用...
这个压缩包文件“IOS应用源码——应用程序翻页特效(类似苹果电子书的翻页效果).zip”显然包含了一套实现这种翻页效果的源代码。以下是对这个知识点的详细说明: 首先,我们需要理解的是,这种翻页效果通常是通过...
这个压缩包文件“IOS应用源码——应用程序翻页特效(类似苹果电子书的翻页效果).rar”显然包含了一套完整的源代码,用于演示如何在iOS应用中实现这种翻页动画。下面我们将深入探讨相关的知识点。 1. **Core ...
这个源码项目是一个很好的学习资源,可以用来理解如何在iOS应用中实现和定制底部菜单,同时也可以深入研究Swift或Objective-C编程,以及iOS应用的UI设计和导航。通过查看和分析源代码,开发者可以提高自己的iOS开发...
【标题】"IOS应用源码——聊天程序--(UDP通信,bubble代码) chat 2.zip" 描述了一个iOS平台上的聊天应用程序源代码,其中包含了UDP通信机制和bubble样式的消息显示功能。UDP通信是网络编程中一种无连接的、不可靠的...
这个实例源码提供了一个完整的解决方案,开发者可以通过学习和理解代码,掌握如何在自己的iOS应用中实现类似的翻页效果。通过深入研究和实践,不仅可以提升iOS开发技能,还能了解如何将复杂动画集成到实际项目中,...
在iOS开发领域,源码是理解应用程序工作原理和学习新技术的关键。"IOS应用源码——商业应用.zip" 提供了一个完整的iOS商业应用的源代码,这为我们深入学习iOS开发提供了宝贵的资源。在这个压缩包中,我们可以看到一...
在iOS应用开发中,导航和底部菜单是两个关键的用户界面元素,它们为用户提供了一种简单易用的方式来浏览和操作应用程序。"IOS源码——导航及底部菜单.zip"中的资源很可能是提供了一个实现这些功能的示例代码库,用于...
在iOS应用开发中,导航和底部菜单是两个关键的用户界面元素,它们为用户提供了一种在应用程序的不同视图之间切换的直观方式。本资源“IOS源码——导航及底部菜单.7z”显然包含了实现这两种界面组件的源代码示例。...
这个压缩包文件“IOS应用源码——斯坦福大学公开课:iOS程序开发教程(PPT+代码).zip”包含了一系列关于iOS应用程序开发的教育资源,主要来源于斯坦福大学的公开课。以下是其中涉及的一些关键知识点: 1. **MVC...
标题中的“IOS应用源码——wordpress ios客户端最新源码.zip”表明这是一份关于iOS平台上的WordPress客户端应用程序的源代码。这份源代码可能是开发者为了学习、研究或改进WordPress iOS应用而发布的。源代码通常...
在iOS开发领域,源码是理解应用程序工作原理和学习新技能的重要资源。"IOS应用源码——天气预报.rar"提供了一个完整的iOS天气预报应用的源代码,这为开发者提供了研究和学习iOS应用开发,特别是与天气相关的API集成...
【标题解析】:“IOS应用源码——商业授权.zip”这个标题明确指出了这是一个与iOS操作系统相关的应用程序源代码,而且特别提到了“商业授权”。这暗示了源代码可能包含了一个已经开发完成或者正在开发中的iOS应用,...
在iOS平台上开发应用程序,尤其是天气预报类应用,涉及到的知识点非常广泛,涵盖了移动开发、网络编程、数据解析、用户界面设计等多个方面。以下是对"IOS应用源码——天气预报.zip"这一主题的详细分析。 首先,我们...
在iOS开发中,后台获取功能是一项关键的技术,它允许应用程序在后台状态下继续执行特定任务,如更新数据、播放音乐或定位服务。这个压缩包“IOS源码——后台获取功能.zip”很可能包含了一些示例代码或者完整的项目,...
在iOS开发领域,源码是理解应用程序工作原理和学习新技术的关键。"IOS应用源码——商业应用.rar" 提供了一个真实商业应用的源代码,这为开发者提供了宝贵的实践材料,可以深入探究iOS应用的设计和实现。以下是这个...
【标题】"IOS应用源码——Set.rar"指的是一个压缩包文件,其中包含了iOS应用程序的源代码。在iOS开发中,源代码是开发者用Objective-C或Swift编程语言编写的,用于构建应用程序的文本文件集合。这个压缩包可能包含了...