Objective-C程序结构和项目结构介绍 – Objective-C开发教程

【Objective-C程序结构和项目结构介绍 – Objective-C开发教程】上一章Objective-C开发教程请查看:Objective-C入门介绍和环境安装
这一章我们讨论Objective-C开发比较宏观的东西,以免后面开发各种混乱。首先是介绍OC程序结构,这是本语言入门的开始。然后介绍OC的项目结构,包括macOS项目和iOS项目的一些项目结构的基本内容。
Objective-C程序结构解释一个OC程序一般包含以下元素:

  • 预处理命令#import,类似于C/C++的#include,用于将文件导入到本文件。
  • 接口文件interface,使用@interface开始,以@end结束,中间是接口内容的声明。
  • 实现文件implementation,使用@implementation开始,以@end结束,中间是接口声明的实际实现。
  • 方法或函数method或function,和其它语言的方法和函数类似,用于实际逻辑的实现,一般又包括在接口中声明的函数,不提供实现;在实现文件中对应的函数提供实际实现。
  • 变量variable,储存最基本的数据,变量有数据类型的限制。
  • 语句和表达式,程序的基本单元,不同的语句和表达式组成一个函数。
  • 注释,常用的注释就两种:单行注释使用//,多行注释使用/* */。
下面看一个实际的例子进行解释,通常你可以在XCode中创建一个类文件,会对应有一个头文件和实现文件,或者也可以直接创建一个实现文件,如下图:
Objective-C程序结构和项目结构介绍 – Objective-C开发教程

文章图片
下面的代码直接在主文件main.m中书写(注意这里创建的项目是macOS项目):
/* 第一个oc程序实例 */// 1. 头文件,导入基础头文件 #import < Foundation/Foundation.h>// 2. 接口声明 @interface SampleClass : NSObject// 声明函数 - (void) sampleMethod; @end// 3. 接口实现 @implementation SampleClass- (void) sampleMethod{ NSLog(@"Hello World!"); }@end// 4. 主入口函数 int main(int argc, const char * argv[]) { // 实例化,创建一个对象 SampleClass *sample = [[SampleClass alloc]init]; [sample sampleMethod]; // 调用函数 return 0; }

下面我们一起解释一下上面的代码:
  • 首先顶部是一个多行注释,注释代码不会被编译进目标代码,它的作用是让你的代码更清晰,例如注明一个函数的作用,一行语句的意思。
  • 然后下面是接口声明,以@interface开始,这个接口声明和C语言的头文件,以及Java中的接口类似,但是可以写在同一个.m实现文件中。另一种方式是分开两个文件写,这样有什么区别呢?区别就是如果你的相关实现是提供给其它功能实现的,那么最好就是分开写,如果当前实现并不需要提供给别人,那么就可以写在同一个文件。
  • 接口内部有一个函数声明,该函数是不实现的。
  • 接着是接口的实现,是对接口声明函数的具体实现,程序运行时会自动找到其具体实现。
  • 下面是main函数,和C、JAVA中的main函数也是类似的,程序的唯一入口。
macOS项目结构这里主要是想讨论一下OC项目的基本结构,以及重要的相关配置,首先介绍macOS的项目结构内容,然后是iOS的项目结构,两者可能会有一些重叠。
首先是macOS项目结构,macOS主要是开发桌面程序,结构相对简单,如下图:
Objective-C程序结构和项目结构介绍 &#8211; Objective-C开发教程

文章图片
如上图,basic是项目名,下面是basic文件夹,用于存放项目的源代码以及一些资源文件,Products文件夹存放项目构建的最终文件,这里是basic,一个可执行的文件(这个项目是命令行项目)。
当然上面是比较简单的,下面看重点的东西。
点击项目名(basic),打开项目的配置,首先看到General(通用配置)。注意点击下图basic坐标的按钮可以打开PROJECT和TARGET的配置,PROJECT项目配置会应用于TARGET内容的所有对象,PROJECT配置只有两项:Info和Build Settings。
下面先介绍TARGET的配置,TARGET对象可能有多个,一个对象就是一个可运行的应用,在iOS中还会有Test相关的对象。
TARGET配置
Objective-C程序结构和项目结构介绍 &#8211; Objective-C开发教程

文章图片
  • 首先是Identity(项目特征),这里提示Choose Info.plist File(选择Info.plist文件),.plist的意思是Property List(属性列表),可以使用Info.plist对项目进行全局配置以及一些权限配置,这个文件在iOS文件中默认存在。
  • 下面是Signing(签名),Automatically manage signing表示自动管理前面,Xcdoe会自动创建和更新配置文件、app ID和证书,使用默认即可,下面是使用的签名对应的Apple开发者,如果没有,你需要创建一个,macOS和iOS项目都需要使用签名。
  • 接着是Deployment Info(部署信息),Deployment Target表示项目部署/发布支持的最低SDK版本,表示你开发的项目最低兼容到什么SDK版本,这个配置比较重要,一般建议将该版本尽量设置为低版本,以兼容更多的用户。
  • 最后是Linked Frameworks and Libraries(项目链接的框架和库),允许你使用第三方库。
第二个是Resource Tags,一般不怎么用。
第三个是Build Settings(编译设置),如下图:
Objective-C程序结构和项目结构介绍 &#8211; Objective-C开发教程

文章图片
下面第一行是过滤行:
  • Basic展示常用配置,包括Deployment部署配置,Packaging打包,Signing签名,User-Defined用于自定义。
  • Customized展示自定义配置,可自定义的配置包括部署信息、打包信息和签名信息。
  • All是全部的配置,使用右边的搜索框可以搜索相关的配置。
  • Combined对象的编译配置。
  • Levels所有对象的编译设置。
第四个是Build Phases(编译阶段)
Objective-C程序结构和项目结构介绍 &#8211; Objective-C开发教程

文章图片
编译阶段是当前对象编译过程的一个阶段,包含:
  • Target Dependencies:对象依赖阶段,包含一些扩展、插件依赖。
  • Compile Sources:源文件编译阶段,编译项目主要源文件,可以添加编译器编译选项。
  • Link Binary With Libraries:链接二进制文件和库阶段。
  • Copy Files,复制包资源阶段。
  • 左上角的+按钮可以添加更多的编译阶段。
最后一项是Build Rules编译规则,定义文件类型以及用于编译它们的处理器之间的关系。
PROJECT配置
Objective-C程序结构和项目结构介绍 &#8211; Objective-C开发教程

文章图片
配置说明如下:
  • Deployment Target:配置所有对象的最低SDK版本。
  • configuration:所有对象的可用编译配置。
  • Localizations:指定项目本地化语言
  • Build Settings:编译配置,和上面的TARGET对象配置基本相同。
以上可以内容对OC项目结果可以有一个简单的了解,后面会更详细介绍Project、Target和Workspace的区别。对于Porject的配置,Target继承会一些Porject的配置,下面继续介绍iOS的相关配置。
iOS项目结构相关的配置和上面介绍的macOS项目的配置有一大部分是重叠的,所以这里只介绍那些不同的,首先是TARGET的通用配置:
Objective-C程序结构和项目结构介绍 &#8211; Objective-C开发教程

文章图片
通用配置信息包括:
  • 项目标识:包含包名和版本号等一些基本信息。
  • 签名,和上面一样。
  • 部署信息,其中最重要的一项是Deployment Target,设置最低兼容的SDK版本。
  • 下面是设置APP的icons以及启动页面。
  • Embedded Binaries嵌入二进制。
第二个不同的是Capabilities,用于设置对象支持的相关功能。
小结我们介绍了OC程序的基本结构,包括接口和实现的一般形式,头文件导入的形式,以及main入口函数,下一章正式开始进入OC语言编程。
然后我们介绍了OC项目结构:macOS项目和iOS项目结构及其相关配置,这些配置内容对完整的项目开发特别有用。
后面我们还会更详细地介绍Target、Porject、Workspace和Scheme的相关内容,例如可能我们开发项目需要一个开发版本和生产版本,如使用cocoapods添加第三方依赖等等,我们都需要了解这些基本概念。

    推荐阅读