前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ios入门之项目结构介绍

ios入门之项目结构介绍

作者头像
xiangzhihong
发布2018-02-06 17:35:29
2K0
发布2018-02-06 17:35:29
举报
文章被收录于专栏:向治洪向治洪

对于刚入门的ios程序猿来说,掌握Xcode开发工具及程序项目是非常必要的,掌握这些基本的内容对于我们后期开发,调试也是很有帮助的。

首先,创建一个 Xcode 工程。

应用配置

点击项目的.xcodeproj文件即可查看项目配置信息。

这里写图片描述
这里写图片描述

进入配置文件之后,我们会看到编辑区域的左侧有两个大的分类:PROJECT 和 TARGETS。PROJECT 里面是整个工程的配置文件;而 TARGETS 里面 包含了这个工程中不同的可执行程序的配置文件,每个target都代表了一个编译执行的程序,这个程序可以是一个可以运行的App,可以是一个测试,可以是一个应用扩展,也可以是一个静态库或或者Framework。

PROJECT 配置

点击 PROJECT 下面的 Tasted 工程。

这里写图片描述
这里写图片描述

PROJECT 配置主要分为两个部分 info 和 Build Settings。而 Build Settings 通常是在每个 target 里面单独配置的,我们很少去改动整个工程的编译设置。所以在这里我们来主要介绍一下 info 的配置。

Deployment Target:定义了我们这个工程在部署时使用的最低 iOS SDK 版本。 Configurations:定义了我们在编译的时候可以使用的配置。在创建工程的时候会有两个默认的配置:Debug 和 Release。在你运行你的应用时,Xcode会使用Debug配置来编译和签名你的应用,在你打包(Archive)你的应用时,Xcode 会使用 Release 配置来编译和签名你的应用。这个设置在 Tool bar scheme-> Manager schemes -> edit 里面配置的,你可以对它进行修改。

这里写图片描述
这里写图片描述

Localizations:定义了我们应用的本地化语言,默认是英语,你也可以添加简体中文,繁体中文,日语等语言。当在不同的地区时,系统会帮你使用用不用的语言文件。

TARGET 配置

这里写图片描述
这里写图片描述

TARGET 的配置里面由7个面板组成: General,Capabilities, Info,Resource Tags,Build Settings, Build Phases 和 Build Rules。 General:通用配置里面包括了一些应用基本信息的配置。这个里面着重介绍一下下面的着几个配置。

  • version & build:从名字上来看就可以很清楚的区分这两个字段的不同:一个是当前的版本号,对应 Info.plist 里面的CFBundleShortVersionString 字段;另一个是你当前版本的编译次数,对应 Info.plist 里面的 CFBundleVersion 字段。
代码语言:javascript
复制
TIPS:当然了,如果你的编译管理没有这么严格,那么可以用下面的形式:version:1.0.0 build:10000。最好不要把 version 和 build 都写成一样的,这样做在统计和版本判断上可能会出现不必要的麻烦。
  • Deployment Target:定义了我们这个应用允许在哪个 iOS SDK 版本以上才可以安装或升级。对于一个全新的应用,安装用户的 iOS 版本低于这个值,那么是不允许安装这个应用的;对于一个升级的应用,升级用户的 iOS 版本低于这个值,那么是不允许升级这个应用的,会提示需要升级你的 iOS 系统,但并不会影响到上个版本的使用。
代码语言:javascript
复制
TIPS:建议全新应用和升级应用兼容最新和上一个版本的SDK(例如:现在Apple 发布了最新的iOS 8 版本,那么你可以把这个只调整为 7.0);对体验要求比较高的应用可以只兼容最新版本的SDK;对于一个在做成熟产品移动化的新应用,可以再往下兼容一个版本,但总的兼容SDK的数量不要超过三个。因为每兼容一个版本的SDK,工作量会大大加大,而且收益会越来越低。

Capabilities:这里面定义了很多应用附加功能的开关,如果你需要某些功能,那么就需要在这里把这些功能打开。具体这些功能都是什么,大家可以自行查看。

这里写图片描述
这里写图片描述

Info:这里面定义了我们应用里面用到的所有信息。

这里写图片描述
这里写图片描述
  • Custom iOS Target Properties:从上图中我们可以看出,Custom iOS Target Properties就是 Info.plist 里面的内容。
代码语言:javascript
复制
TIPS:如果你需要动态改变 status bar的颜色和状态的话,就需要添加 View controller-based status bar appearance字段,并设置为 NO。
  • Document Types & Exported UTIs & Import UTIs: 这三个配置是:让其他app可以通过你的程序来打开某些类型的文件,或者你的app调用其他app来显示某些类型的文件用的。这个配置大部分的app都用不到。
  • URL Types:我们的程序可以向系统注册自己的 URL Scheme,来使得另外一个App可以通过这个 URL Scheme来打开我们的应用,点击添加按钮可以添加一个URL Scheme。

Build Settings:这里面包括了我们在编译过程中会用到的所有配置。

这里写图片描述
这里写图片描述

首先,我们先要选择 All。如果不选择 All,有些编译选项是会被隐藏掉的。然后我们再来看下下面的两个箭头:你工程的每个 Configuration 都可以单独设置编译选项。右上角的搜索框有助于你快速的找到相应的配置。

  • Code Signing Idenity:这个选项是用来告诉 Xcode,你编译的时候是用哪个证书来签名的。通常情况下,Debug可以选择 iOS Developer; Release 可以选择 iOS Distribution;
  • Preprocessor Macros:可以这个里面定义一些预处理的宏。例如,Xcode 自动帮你在 Debug 里面定了一个宏DEBUG=1,这样就可以用这个宏来判断当前的App是不是Debug版本了。也可以用它来为你的内部版本增加一些测试功能。
  • Search Path:可以用来指定你的工程可以在哪个目录下,搜索头文件、Framework或者库。

Build Phases:是应用管理源文件、资源和依赖的地方。主要分为下面的这四个部分:

这里写图片描述
这里写图片描述
  • Target Dependencies:是用来管理你的 Target依赖的。在几年前,基本上都是使用它来做第三方工程依赖的。现在基本上都是使用 Cocoapods 来引导第三方的项目了。
  • Compile Sources:是用来管理你这个应用里面需要编译的所有源文件的。所以,一个 Target里面并不一定要编译和使用左侧工程里面的所有源文件。
  • Link Binary With Libraries:是用来管理二进制库和Framework的。
  • Copy Bundle Resources:是用来设置你需要拷贝到 Main Bundle 里面的资源文件的,里面可能会包括storyboard,xib,图片文件,JS 文件,CSS 文件,其他的资源包 等等。

iOS项目分层

通常按照MVC的开发模式,我们把文件分到不同的 Group 里面。然后会把 AppDelegate、定义常量的文件或者一些全局性质的类/文件放到一个Group下面,可以叫做 App 或者 Global。然后我们可以把通用的 Category 或者 独立的功能组件放到一个单独的Group下面,可以叫做 extensions、libraries。最后,使用叫做resources的group来放置我们所有的资源文件。

这里借鉴网上比较流行的方式,将项目分为常用的四个模块:Main(主要)、Expand(扩展)、Resource(资源)、Vender(第三方)。

Main

此模块主要目的是为了存放项目的页面内容,比如MVC的内容,Base(基类)用于存放一些公共的内容,其它功能模块的提取,方便继承调用。

Expand(扩展)模块

此模块主要包含Const、Macros、Tool、NetWork、Category、DataBase等功能扩展模块;

Resource(资源)模块

资源模块主要包含三方面,Global(全局)、Image(图片)、Plist(配置文件)等。

Vender(第三方)模块

本模块主要用来管理第三方库等。

示例

这里写图片描述
这里写图片描述

文件说明: Bms:这个文件夹下主要放的是与业务相关的文件; Application:这个文件夹下主要放的是UI相关的文件、业务控制层相关的文件、数据模型、业务逻辑相关的文件等; BaseServer:这个文件夹下主要放的是 UI 业务逻辑相关文件和业务数据逻辑相关的文件; Controllers:这个文件夹下主要放的是业务相关控制类,例如:UIViewcontroller; Dtabase:这个文件夹下主要放的是数据库相关的业务文件; Models: 这个文件夹下主要放的是业务数据实体(数据模型); View:这个文件夹下主要放的是UI窗口组件和UI 公共组件; Config:这个文件夹下主要放的是一些自定义的配置文件,例如:宏定义文件、自定义 .plist文件、.pch文件等; Helpers:这个文件夹下主要放的是一些辅助业务相关的辅助文件; IM:这个文件夹下主要放的是即时聊天相关的业务文件; Core:这个文件夹下主要放的是一些核心代码,比如一些三方包,工具类,底层代码等; Database:这个文件夹下主要放的是一些数据库底层核心代码; IM:这个文件夹下主要放的是即时聊天模块的核心代码; Libs:这个文件夹下主要放的是三方包文件,例如:FMDB 三方包; Network:这个文件下主要放的是与服务器交互的核心文件,例如:Https、Socket、Webserver等; Utils:这个文件夹下主要放的是一些系统常用的工具类,例如:获取时间工具类,文件大小等; Supporting Files :这个文件夹下主要放的是系统生成的文件,比如:AppDelegate文件、info.plist文件和 main.m文件; Resource:这个文件夹下主要放的是一些资源文件,比如:图片文件、音频文件等; Frameworks: 这个文件夹下主要是将用到系统的 Frameworks,整理到这个文件夹下,比如:AVFoundation.framework Products:这个文件夹是系统自己生成的,主要放的是 .app文件。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 应用配置
    • PROJECT 配置
      • TARGET 配置
      • iOS项目分层
        • Main
          • Expand(扩展)模块
            • Resource(资源)模块
              • Vender(第三方)模块
                • 示例
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档