Xcode使用说明书
2016-06-20 » iOS开发进阶作为iOS开发,我绝大部分时间都在与Xcode打交道,把自己遇到的或别人遇到的各种坑,各种开发小知识在这里做一个整理。更好、更高效的使用Xcode才能更快速的进行开发工作。
Xcode的使用
1.Xcode 操作面板
-
工具栏(Toolbar)
你选择工作视图,运行app, 在不同布局界面切换的工具栏
从左到右分别是:
运行、停止按钮、Scheme列表、模拟器列表、活动查看器、编辑器模式配置按钮组、切换界面布局按钮组
-
导航区(Navigator area)
导航你整个工程、警告、报错、搜索等的地方
从左到右八个按钮分别是:
项目导航:检索项目源代码和资源文件 符号导航:显示代码中得类、对象、函数、变量、属性等元素 搜索导航:全工程搜索器 事件导航:显示工作区找到的事件,如编译错误、语法错误等错误、异常提示信息 测试导航:显示单元测试用例以及测试结果 调试导航:显示程序在调试状态下得资源占用状态以及堆栈信息 断点导航:显示开发过程中在工程中打的断点信息 日志导航:显示日志信息,编译、分析、调试方面的日志
-
编辑区(Editor area)
所有奇迹诞生的地方
跳转栏:显示当前编辑器编辑的文件路径,还可以直接跳转到项目任意层次任意文件
编辑区域:源代码编辑器、辅助编辑器、界面生成器、版本编辑器等等
-
工具区(Utilities area)
包含检查器和一些库
检查器:查看更改编辑器选中元素的相关特性
库导航栏:资源库导航(文件模板、代码片段、对象、媒体文件)
-
调试区(Debug area)
包括调试窗口和变量检测器
断点执行、位置模拟、输出控制台、调试功能区。具体后面 ”Xcode项目调试“ 有详细描述。
-
Xcode系统工具条
常用菜单:Product
Run 运行app Test 运行单元测试 Build 编译 Clean 清空缓存 Scheme 修改编译运行需要的一些 Configuration
2.Xcode 创建项目
-
新建项目流程
Xcode File - New - Project
-
设置 Project Options
Product Name :项目名称 Team :开发者信息 Organization Name :一般是反转域名方式保证唯一性 Organization Identifier : 一般是反转域名方式保证唯一性 Bundle Identifier :Organization Identifier 再加上 "." 再加上 Product Name Language :开发语言 (Objective-C、Swift) Devices :设备支持 (Universal、iPhone、iPad) Use Core Data : 是否使用数据持久化 Include Unit Tests :是否包含单元测试Target Include UI Tests : 是否包含UI测试Target
-
项目目录结构(swift)
demo --demo ----AppDelefate.swift ----ViewController.swift ----Main.storyboard ----Assets.xcassets ----LaunchScreen.storyboard ----Info.plist ----demo.xcdatamodeld //勾选了 Use Core Data 才有 --demoTests //勾选了 Include Unit Tests 才有 --demoUITests //勾选了 Include UI Tests 才有 --Products --Frameworks //添加了第三方库才有
3.Xcode 配置分析
详细分析传送门
-
PROJECT 和 TARGETS
project就是一个工程,一个project可以对应多个target (创建一个project,xcode会默认生成一个target)。
targets之间完全没有关系。但target和project有关系,target的setting会从project settings中继承一部分。
targets : 一个target对应一个新的product(基于同一份代码的情况下)。
虽然代码是同一份, 但编译设置(比如编译条件), 以及包含的资源文件却可以有很大的差别. 于是即使同一份代码, 产出的product也可能大不相同。例如我们一份代码需要做出不同应用环境的 app 这个时候target的作用就出来了。
每个target单独会有一份 info.plist。
Manage Schemes 可以管理变更target。
-
PROJECT 部分 - Info
Deployment Target :运行应用需要的最低操作系统版本
configurations :编译环境
Localizations : 语言本地化
-
PROJECT 部分 - Build Settings
刚接触IOS开发比较少需要更改
-
TARGET 部分 - Info
Custom iOS Target Properties
Bundle versions string, short : 是正式的版本号,跟itunes上的版本号一致,Bundle Version 可用作内部版本时使用,当Bundle Version String缺省时,Bundle Version替代Bundle Version String的功能,同时也继承他的限制(比如格式,位数等),需与itunes上的版本号保持一致。 Bundle identifier :app标识,一般按反域名的方式写,默认使用创建项目的时候填写的内容。 Main storyboard file base name : 主 storyboard 文件名字。 Bundle version:内部版本号,不对外公开。 Launch screen interface file base name : 启动图 storyboard 文件名字。 Executable file :$(EXECUTABLE_NAME) 执行程序名,默认与 Product Name 一致。 Bundle name:目标项目的名字(TARGETS下面的名字),默认使用创建项目的时候填写的 Product Name。 Bundle display name : 显示在手机屏幕上的应用名字。 Supported interface orientations :横竖屏支持。 Localization native development region : 本地开发默认地区。 Required device capabilities : 设备运行环境、比如有的静态库不支持某些指令集(CPU决定)。 当我们需要使用某些系统权限和对应的提示文案也是配置在这里: Privacy - Photo Library Usage Description : 照片库权限弹窗说明。 Privacy - Camera Usage Description : 相机权限弹窗说明。
URL Types
iOS的App 可以注册自己的URL Scheme,URL Scheme是为方便App之间互相调用而设计的。我们可以通过系统的OpenURL来打开该App,并可以传递一些参数。 URL Identifier是自定义的 URL Scheme 的名字,一般采用反转域名的方法保证该名字的唯一性。 URL Scheme 用于外部唤起 如: URL Identifier :com.yang.XcodeProjectDemo URL Scheme :yang 然后我们在浏览器输入 yang:// 就会收到提示询问是否跳转到demo App了
-
TARGET 部分 - General
Identity
Display Name : 显示在手机屏幕上的应用名字。 Bundle Identifier : App标识,一般按反域名的方式写,默认使用创建项目的时候填写的内容。 Version :正式的版本号 Build : 内部版本号,不对外公开。
Signing
Automatically manage signing :Xcode新增的证书自动管理,Xcode会自动选择合适证书 Team : 对应的开发者账号 Apple ID Provisioning Profile : 配置文件 Signing Certificate : 签名证书
Deployment Info
Deployment Target :运行应用需要的最低操作系统版本 Devices :设备支持(Universal、Iphone、Ipad) Main Interface :主界面对应文件。 Devices Orientation :横竖屏支持。 Status Bar Style :顶部状态栏类型。
App Icons and Launch Images
App 图标 和 启动图配置
Linked Frameworks and Libraries
需要引入的 frameworks 或者 libraries 列表
-
TARGET 部分 - Capabilities
功能配置、一部分是绑定开发账号的,如 Push Notifications 推送
-
TARGET 部分 - Build Phases
Target Dependencies :Target依赖,某些Target可能依赖某个Target。
Compile Sources : 已编译文件
Link Binary With Libraries :第三方类库
Copy Bundle Resources :资源文件
-
Scheme部分 - Info (Product-Scheme-Edit Scheme)
Build Configuration : 配置当前target使用 Debug 或者 Release 编译环境
4.Xcode 资源内容
-
图片资源
1.图片集
Assets.xcassets 以 Image Set (图片集)的方式存储图片。
IOS 初始化图片 : let image = UIImage(named: “xxx”)
一个图片集包括 @1x、@2x、@3x 三个规格的图片,分别对应不同的scale(分辨率)。
同时,也可以针对不同设备设置图片(比如同一个名字的图片集,iphone和ipad要用不一样的图片)。
通常上面初始化方法中的 “xxx” 就是图片集的名字, 在图片集里面放两张不一样的@2x和@3x图片,在iPhone6和iPhone6 Plus加载出来的会不一样。
2.AppIcon
AppIcon 表示 应用图标的图片集
3.LaunchImage
LaunchImage表示启动页那张图的图片集,也可以通过 LaunchScreen.storyboard 配图。
4.Slicing
例如微信聊天气泡图片的处理,slicing可以自动拉伸图片并且不影响气泡边角。
-
代码片段
常用的代码封装成代码片段
图中从上到下的含义依次是: Title 代码片段的标题 Summary 代码片段的描述文字 Platform 可以使用代码片段的平台 Language 可以在哪些语言中使用该代码片段 Completion Shortcut 代码片段的快捷方式,比如本文开头用到的dowhile,在这里,把属性设置的快捷方式设为property Completion Scopes 可以在哪些文件中使用当前代码片段,比如全部位置,头文件中等,当然可以添加多个支持的位置。 最后的一个大得空白区域是对代码片段的效果预览。 一切设置完成以后,点击该菜单右下角的Done按钮,新建工作就结束了。 代码片段存放地址:~/Library/Developer/Xcode/UserData/CodeSnippets
5.Xcode 项目调试
-
单元测试
1、写完代码以后:想要验证一下自己写的代码是否有问题。
2、写代码之前:就是写代码之前所有的功能分模块的设计好,测试通过了再写。
3、修复某个bug后:一般修复完某个bug,为了确保修复是成功的,可以写测试。
4、检查方法执行时间,也可以写单元测试。
-
断点调试
1.运行App、并在需要的位置设置断点
2.断点调试区域也是大多数IDE 都有的调试方式,开启关闭断点、进入断点,下一步、跳入、跳出
3.视图调试 :上图中的Debug view graph 用于视图调试,可以看到当前控制器的每一层视图。
4.导航条-调试导航 :管理全局断点,还可以添加一些特殊类型断点,例如全局异常断点
-
LLDB调试
在控制台输入命令进行调试, 详细说明 : LLDB调试
IOS模拟器调试
1.选择 Scheme 和 选择模拟器
2.模拟器列表,可以选择真机、模拟器,可以添加或者下载更多模拟器
3.模拟器菜单操作(Hardware菜单 包括 旋转、锁屏、回到主页面等等)
IOS真机调试 (模拟器毕竟是模拟器)
需要一个普通的AppleID,使用Xcode自动证书即可
如果之前使用过证书,需要在新项目使用证书,删除keychain中得你这个appleID中得证书,关开一下自动使用xcode证书,然后会自动生成对应的签名证书
Xcode常用快捷
1.自动排版 选中 右键 structure -> re-indent 或者 Control + I
2.代码左右移动,Command + [ 或者 Command + ]
3.OC .h/.m 文件快速切换 Control + Command + up/dowm
4.快速打开 Command + Shift + O
5.快速文档 Command + Shift + 0(零)
6.快速定位文件在导航区中的位置 Command + Shift + J
7.快速在文件中查找指定方法 Control + 6 、然后根据名称进行搜索
8.快速到第一行 / 最后一行 Command + up/down
9.快速到行首/尾 Command + left/right
10.代码往上交换,移动一行 Command + option + [
11.代码往下交换,移动一行 Command + option + ]
12.从光标位置往左快速选中一行 Command + Shift + left
13.从光标位置往右快速选中一行 Command + Shift + right
14.设置断点 Command + \
15.查找文件相关联文件、调用者、头文件包含在哪些地方
参考