Xcode 功能简介以及底层逻辑详解

通过Xcode创建工程

启动Xcode,点击“create a new project”,在打开的“Choose template for your new project”中选择你要创建的工程模板

从下图可以看出,iOS工程模板分为两类——Application和Framework&Library

1、Application类型:
single view app:可以构建单个视图的应用
game:可以构建基于iOS的游戏应用
augumented reality app:可以构建增强现实(AR)的应用
document based app:可以构建文稿类的应用
master-detail app:可以构建树形结构导航式应用,生成的代码包括导航控制器和表视图控制器等
tabbed app:可以构建标签式导航模式的应用,生成的代码包括标签控制器和标签栏等
sticker pack app:可以构建表情包的应用
iMessage app:可以构建聊天应用

2、Framework&Library类型:

framework:可以创建自己的iOS框架

static library:可以创建自己的静态库(出于代码安全和多个工程重用代码的考虑,我们可以将一些类或者函数编写成静态库.静态库不能独立运行,编译成功会生成名为libXXX.a的文件

Metal library:可以创建自己的Metal库(Metal是一个兼顾图形和功能,面向底层,低开销的硬件加速应用程序接口)

xcode ios 状态栏显示 xcode界面介绍_开发者


选择完自己要创建的工程之后,点击Next,出现以下页面,根据实际的情况填写以下的内容

product name:工程名字

team:APP Store 上开发者的名字,没有可设为None

organization name:组织名称,可以是团队、机构或者开发者的名字

organization identifier:组织标识(很重要).一般情况下,这里输入的是团队、机构或者开发者的域名,这类似于Java的包命名

bundle identifier:捆绑标识符(很重要).该标识符由 organization name + product name构成.在APP Store上发布应用会用到它,所以命名不可重复

language:开发语言选择

user interface:选择设备

use core data:选择该项,可在工程内添加core data代码(core data是苹果的数据持久化技术)

use cloudkit:选择该项,可在工程内将您的 app 数据存储在 iCloud 中,让所有设备和网络上的所有内容保持最新。

include unit tests:选择该项,可在工程内添加单元测试代码

include UI tests:选择该项,可在工程内添加UI测试代码

xcode ios 状态栏显示 xcode界面介绍_iOS_02


一切设置完成,来到开发界面,Xcode为我们我们生成了很多文件

helloworld组里放置了helloworld的=工程的主要代码,product组里放置了编译后的工程.

helloworld组里有什么?
两个类:AppDelegate和ViewController
两个页面布局文件:Main.storyboard(主页面)和LauchScreen.storyboard(启动页面)
Assets.xcassets文件夹是资源目录,用来管理图片
Info.plist是工程属性文件

⚠️注意: 文件夹(folder)和组(section)是有区别的! 访问文件夹的资源时,需要将文件夹作为路径.而组的话直接输入文件名访问即可.

xcode ios 状态栏显示 xcode界面介绍_ios_03


主要的编码工作在AppDelegate和ViewController中进行,它们的类图如下图所示:

AppDelegate继承自UIResponder类,并实现了UIApplicationDelegate委托协议.UIResponder类可以使子类AppDelegate有处理响应事件的能力,而UIApplicationDelegate委托协议使得AppDelegate能够成为应用程序委托对象,而这种对象能够响应应用程序的生命周期.相应地,AppDelegate的子类也可以实现这两个功能.

ViewController类继承自UIViewController类,它是视图控制类,在工程中扮演着根视图和用户事件控制类的角色.

xcode ios 状态栏显示 xcode界面介绍_iOS_04


作为应用程序的委托对象,AppDelegate类在应用生命周期的不同阶段会回调不同的方法.首先先了解iOS应用的五种状态以及彼此之间的关系

xcode ios 状态栏显示 xcode界面介绍_xcode ios 状态栏显示_05


not running:非运行状态,应用没有运行或者被系统终止

inactive:前台非活动状态,应用正在进入前台状态,但是还不能接受事件处理.

active:应用进入前台状态,能接受事件处理

background:应用进入后台后,依然能执行代码,如果有可执行的代码,就会执行代码.如果没有或者执行完毕,就会马上进入挂起状态

susended:被挂起的应用有种被“冷冻”的感觉,不能执行代码.如果系统内存不够会被系统终止非运行状态——应用启动场景

xcode ios 状态栏显示 xcode界面介绍_xcode_06


点击home键——应用退出场景

xcode ios 状态栏显示 xcode界面介绍_开发者_07


第二种情况是应用不可以在后台运行或者挂起,将又suspended进入not running阶段

xcode ios 状态栏显示 xcode界面介绍_开发者_08


挂起重新运行场景(略)

应用终止场景(略),注意此场景不会调用任何方法,也不会发出任何通知