个性化阅读
专注于IT技术分析

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文件

下面的代码直接在主文件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主要是开发桌面程序,结构相对简单,如下图:

macOS项目基本结构

如上图,basic是项目名,下面是basic文件夹,用于存放项目的源代码以及一些资源文件,Products文件夹存放项目构建的最终文件,这里是basic,一个可执行的文件(这个项目是命令行项目)。

当然上面是比较简单的,下面看重点的东西。

点击项目名(basic),打开项目的配置,首先看到General(通用配置)。注意点击下图basic坐标的按钮可以打开PROJECT和TARGET的配置,PROJECT项目配置会应用于TARGET内容的所有对象,PROJECT配置只有两项:Info和Build Settings。

下面先介绍TARGET的配置,TARGET对象可能有多个,一个对象就是一个可运行的应用,在iOS中还会有Test相关的对象。

TARGET配置

macOS项目通用配置
  • 首先是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(编译设置),如下图:

macOS编译配置

下面第一行是过滤行:

  • Basic展示常用配置,包括Deployment部署配置,Packaging打包,Signing签名,User-Defined用于自定义。
  • Customized展示自定义配置,可自定义的配置包括部署信息、打包信息和签名信息。
  • All是全部的配置,使用右边的搜索框可以搜索相关的配置。
  • Combined对象的编译配置。
  • Levels所有对象的编译设置。

第四个是Build Phases(编译阶段)

macOS编译阶段

编译阶段是当前对象编译过程的一个阶段,包含:

  • Target Dependencies:对象依赖阶段,包含一些扩展、插件依赖。
  • Compile Sources:源文件编译阶段,编译项目主要源文件,可以添加编译器编译选项。
  • Link Binary With Libraries:链接二进制文件和库阶段。
  • Copy Files,复制包资源阶段。
  • 左上角的+按钮可以添加更多的编译阶段。

最后一项是Build Rules编译规则,定义文件类型以及用于编译它们的处理器之间的关系。

PROJECT配置

macOS PROJECT配置

配置说明如下:

  • Deployment Target:配置所有对象的最低SDK版本。
  • configuration:所有对象的可用编译配置。
  • Localizations:指定项目本地化语言
  • Build Settings:编译配置,和上面的TARGET对象配置基本相同。

以上可以内容对OC项目结果可以有一个简单的了解,后面会更详细介绍Project、Target和Workspace的区别。对于Porject的配置,Target继承会一些Porject的配置,下面继续介绍iOS的相关配置。

iOS项目结构

相关的配置和上面介绍的macOS项目的配置有一大部分是重叠的,所以这里只介绍那些不同的,首先是TARGET的通用配置:

TARGET的通用配置

通用配置信息包括:

  • 项目标识:包含包名和版本号等一些基本信息。
  • 签名,和上面一样。
  • 部署信息,其中最重要的一项是Deployment Target,设置最低兼容的SDK版本。
  • 下面是设置APP的icons以及启动页面。
  • Embedded Binaries嵌入二进制。

第二个不同的是Capabilities,用于设置对象支持的相关功能。

小结

我们介绍了OC程序的基本结构,包括接口和实现的一般形式,头文件导入的形式,以及main入口函数,下一章正式开始进入OC语言编程。

然后我们介绍了OC项目结构:macOS项目和iOS项目结构及其相关配置,这些配置内容对完整的项目开发特别有用。

后面我们还会更详细地介绍Target、Porject、Workspace和Scheme的相关内容,例如可能我们开发项目需要一个开发版本和生产版本,如使用cocoapods添加第三方依赖等等,我们都需要了解这些基本概念。

赞(0)
未经允许不得转载:srcmini » Objective-C程序结构和项目结构介绍 – Objective-C开发教程

评论 抢沙发

评论前必须登录!