Xcode上手之管理项目

Xcode技巧系列://www.greatytc.com/notebooks/7639304/latest

1.管理文件

创建全新的文件

方法一:File->New File
方法二:右键->New File
方法三:Command+N
创建后,如图:

创建文件

|名称|作用|说明|
|::|::|:-:|
|Cocoa Touch Class|创建一个Cocoa Touch类文件|该文件创建时需要选择继承于哪一个父类,一般创建文件选择该方式|
|UI Test Case|创建一个UI测试文件|手动添加UI测试文件来进行测试|
|Unit Test Case Class|创建一个单元测试文件|手动添加单元测试文件|
|Playground|创建一个Playground文件|-|
|Swift File|创建一个Swift文件|-|
|Objective-C File|创建一个OC文件|创建OC文件时,可以选择文件的类型:Empty File空文件,Category类别,Protocol协议,Extension扩展|
|Header File|创建一个头文件|-|
|C File|创建一个C文件|-|
|C++ File|创建一个C++文件|-|
|Metal File|创建一个具有Metal技术的文件|-|
|Storyboard|创建一个故事版|-|
|View|创建一个View|-|
|Empty|创建一个空的文件|-|
|Launch Screen|创建一个启动界面|-|

通过文件模板库创建

模板库创建

直接拖动该模板库的文件到项目导航器相应位置即可快速创建

添加已有文件到项目

方法一:File->Add Files to
方法二:右键->Add Files to
方法三:Option+Command+A
完成上面的操作,会弹出一个窗口,如图:


弹出框

点击Options可以看到一些选项:
Destination:将会使Xcode将所选文件复制到项目的相应目录下,如果不勾选,则只是添加引用,没有将文件复制到项目中。这一点得特别注意!!!!
Added folders:Xcode将文件夹添加到项目的时候采用什么方式。

  • Create groups:创建与文件夹同名的分组,然后将该文件夹的所有内容保留到该分组下。图标是黄色的。
  • Create folder references:创建文件夹引用,图标是蓝色的。

Add to targets:添加到目标对象,选择你要添加到的项目中即可。

直接拖动文件到项目

直接拖动文件到项目导航器相应位置中,会出现与Add Files to可选项类似的弹出框,设置方式同上。
根据个人经验,源代码最好不要采用拖动的方式添加到项目,因为不好管理,我采用的方式是先拖动到项目的文件夹中,然后使用Add Files to的方式添加。拖动的一般是资源文件,比如图片等。

重命名文件

1.在项目导航器中选择需要修改的文件,修改即可。
2.也可在工具区域中文件检查器的Identity and type项目修改Name

应该要特别注意一点,如果说修改了文件扩展名,那么需要在Identity and type中修改type这个选项。因为Xcode记录下的是原文件的编译方式,修改过后,需要手动更改
如下所示,我修改了First.m文件为.mm文件,那么需要把type修改为OC++类型。

修改扩展名

分组管理

源码以分组的形式显示的,点击分组旁边的小三角,可以打开或关闭分组。如果同时按住Option键,可以同时打开或关闭全部分组。
分组不会影响到文件的物理存储结构,但是分组的删除移动命名等操作是不可恢复的,操作之前万分小心。
创建分组:
1.File->New Group
2.右键->New Group
3.Option+Command+N
删除分组:
1.Edit->Delete
2.选中,点击键盘delete键
3.右键->delete
删除分组后,分组下的文件或分组也会删除,删除前请先移动出来。

删除文件

删除文件时,会弹出一个对话框,你需要选择:

删除文件

Remove Reference:删除文件的引用,不会删除物理存放的文件
Move to Trash:从磁盘中删除,会把物理位置的文件也删除

2.Target管理

对象

如图所示:一个项目中可能包含很多个对象(Target),简单的说,一个对象就是一个实际可运行的应用。

添加对象

1.File->New->Target
2.下方的"+"添加
可添加的对象有很多,就不列举了。

PROJECT设置

在上图,我可以看到,有PROJECT设置和TARGET设置。
PROJECT项目设置:该设置会应用于TARGETS内的所有对象。可设置内容如图:

PROJECT设置

info:项目的信息

  • Deployment Target:所有对象的最低OS版本
  • Configurations:所有对象可用编译配置
  • Localizations:指定应用程序本地化的语言

Build Settings:编译配置,该配置和对象的编译配置几乎相同

TARGET设置

1.通用选项General:

通用选项

Identity:


Identity
  • Display Name:项目名称,默认就好
  • Bundle Identifier:包标识符,该ID是唯一的,上架的时候App Store用来识别APP用的,一般不要修改
  • Version:外部版本号,用户能够看到
  • Build:内部版本号,开发者自己看的,区分测试版本用

Signing:应用程序的签名,如果有开发者账号,并且申请了证书,需要在这进行配置
Deployment Info:


Deployment Info
  • Deployment Target:对象支持运行的版本
  • Devices:支持的设备
  • Main Interface:启动时加载的主界面,如果使用了storyboard,该值会是Main,如果纯代码编程,则需要设置为空,然后删掉storyboard。
  • Device Orientation:应用支持的方向
  • Status Bar Style:状态栏的样式

App Icons and Launch Images:APP的图标和启动加载页设置
Embedded Binaries:绑定的二进制文件,使用了第三方SDK时会需要
Linked Frameworks and Libraries:使用系统自带的SDK时选择,也可以添加第三方框架

2.功能选项Capabilities:

设置对象支持的功能。

3.资源Resource Tags

该功能是将资源放到appstore,在需要的时候进行下载。该功能没怎么使用,不甚了解。

4.信息Info

Info

Custom iOS Target Properties:自定义目标属性,由于关键字太多,请参考苹果官方文档
Document Types:定义了程序能够识别的文档类型,不需要识别文档的应用无需设置
Exported UTLs:导出UTI,定义UTI让应用能够识别对应的文件类型
imported UTLs:和上面对应,用来导入UTI
URL Types:让应用程序之间理解和交互数据用的。最多是用在APP之间的跳转的时候。

5.编译设置Build Settings

编译设置

过滤栏设置:

  • Basic:显示最常用的设置
  • Customized:自定义的设置
  • All:显示全部设置
  • Combined:当个对象的编译设置
  • Levels:所有对象的编译设置

具体的设置由于太多,请参考苹果开发文档。要注意的是,这些设置会影响到编译、链接、生成等操作,请不要随意修改。

6.编译阶段Build Phases

编译阶段

编译阶段是当前对象编译过程中的一个阶段,系统默认有对象依赖、汇编资源以及复制包资源等。可以自行添加额外的阶段,设置还可以用Shell脚本以便在编译处理期提供更复杂、精确的控制

1.Target Dependencies:对象依赖阶段,让Xcode知道必须在当前选择的对象编译之前编译其他依赖的对象,比如扩展,插件,该阶段无法删除。

2.Compile Sources:编译源文件阶段,按照该项中的定义,用合适的编译器来编译该对象的所有源文件。可以通过修改该阶段的Compiler Flags来为每个单独文件设置其编译器标识,比如设置单个文件支持MRC。

3.Link Binary With Libraries:连接二进制文件和库,可以控制对象需要连接哪些二进制文件和库,只要使用了二进制文件或库,就必须要链接他们。系统库不会出现在这里,重复添加不会造成框架的重复引用。

4.Copy Bundle Resources:复制包资源阶段,复制对象中定义了的资源文件,复制到安装包下面。

可以通过“+”添加另外3种编译阶段。


另外3种阶段

1.Copy Files:标识文件复制的目标路径
2.Headers:指定头文件以及可见性。Public可见,private不可见,project编译对象时使用
3.Run Script:使脚本运行,可以在脚本编辑器区域编辑,也可以放一个脚本文件进来

7.编译规则Build Rules

用于定义文件类型以及用于编译他们的处理器之间的关联。

8.对象之间的联系

很多时候,某些文件可能需要在多个对象之间共享,因此,可以在这个文件与多个对象之间建立联系。
创建文件的时候,就提示我们选择对象。如果需要手动添加联系,只需要在项目导航器中选中该文件,然后在文件检查器中:


Target Membership

在Target Membership中选择需要联系的对象即可。

9.删除对象

在项目导航器中选中项目文件,然后找到对象列表,点击需要删除的对象,按delete或者下方的“-”即可删除。该对象关联的文件不会被删除。

3.资源管理

在项目导航栏上,可以找到Asset Catalog就是资源目录。可以存放的图片类型:
1.图片集
2.应用图标
3.加载界面
4.OS X图标

1.创建Asset Catalog

系统自动创建了资源文件夹,如图:


资源文件

如果我们需要自己创建的话,创建方法和创建文件类似,选择Asset Catalog即可。

2.添加图标

在资源目录中,我们可以看到AppIcon这个图片集,这就是APP的图标,当然,如果没有该集,可以手动创建。

APP图标

选择App Icons & Launch Images->选择要创建的图片集类型即可。
Xcode对于图标的尺寸是有严格限制的,分辨率不对应的图片放进去是会有警告的。
在属性检查器中,可以设置应用图标集的名称,所支持的版本,尺寸,iOS icon is pre-rendered选项勾选,iOS系统就不会再主界面上给予这个图标添加圆角和高光。
注意:如果说你不小心删除了系统自带的资源文件夹,然后自己创建了一个,此时,Xcode是无法识别应用图标集的,需要配置:选中图标集所属对象->定位到general选项卡->找到App Icons and Launch Images->App Icons Source->在下拉列表中选中自定义的图标集即可。
图标和加载页面

3.添加加载界面

加载界面的添加和图标很类似。
iOS8以后,Xcode添加了另外一种加载方式,默认是通过XIB文件加载,如果需要采用加载图片的方式加载,则需要把上图所示的Launch screen file中清空,然后在Launch images source中选择图片集即可。

4.管理图片集

将图片拖到资源目录即将图片添加到项目中创建。
如果图片不满足大小,可以使用切片功能(Editor->Show Slicing或者下方Show Slicing按钮,然后点击Start Slicing按钮开始),将图片分割。由于切片功能更也有很多内容就不详细说明了。

5.移除图片集

选中图片集,按delete或者右键->remove Selected items即可。
移除图片集中的图片,并不会移除该图片的格子,需要在属性检查器中的Devices属性来进行删除

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 197,511评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,011评论 2 375
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 144,489评论 0 326
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,872评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,741评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,525评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,914评论 3 388
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,542评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,833评论 1 293
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,858评论 2 314
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,674评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,479评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,923评论 3 300
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,099评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,400评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,923评论 2 343
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,141评论 2 339

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,528评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,184评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,965评论 4 60
  • 原本以为android内存泄露会是大牛才该解决的问题。可是公司就我一个Android啊,代码都是你写的啊,工具持续...
    AddisonLi阅读 554评论 1 2
  • 昨天是我开始写日记的第一天,开始了,就发现我有太多东西可以记录了。我要一步一个脚印,不妄想一口吃成大胖子,踏实有力...
    chenkeyi3890阅读 205评论 0 1