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 创建项目

  1. 新建项目流程

    Xcode File - New - Project

  2. 设置 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
    

  3. 项目目录结构(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 配置分析

详细分析传送门

  1. 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。

  2. PROJECT 部分 - Info

    Deployment Target :运行应用需要的最低操作系统版本

    configurations :编译环境

    Localizations : 语言本地化

  3. PROJECT 部分 - Build Settings

    刚接触IOS开发比较少需要更改

  4. 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了
    

  5. 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 列表

  6. TARGET 部分 - Capabilities

    功能配置、一部分是绑定开发账号的,如 Push Notifications 推送

  7. TARGET 部分 - Build Phases

    Target Dependencies :Target依赖,某些Target可能依赖某个Target。

    Compile Sources : 已编译文件

    Link Binary With Libraries :第三方类库

    Copy Bundle Resources :资源文件

  8. 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.查找文件相关联文件、调用者、头文件包含在哪些地方

参考

几个Xcode小技巧

xcode下载