[Android开发学iOS系列] 工具篇: Xcode使用和快捷键

工欲善其事必先利其器.

编辑

  • Cmd + N: 新建文件
  • Option + Cmd + N: 新建文件夹
  • Cmd + / : 注释
  • Ctrl + I: format indentation, (但是使用这个快捷键要小心, 可能会在你的空行里加入不必要的首行缩进, 所以没事不要全选再format.)
  • Ctrl + Cmd + Space → Emoji
  • Opt + Cmd + , : 分割当前编辑窗口
  • Cmd + Shift + J: 显示当前文件在navigator窗口中的位置
  • Cmd + Opt + 左/右: 折叠/展开

菜单窗口

  • Ctrl + Click: 相当于右键, 或者mac trackpad上的两指点击. 会弹出菜单
  • Cmd + Click: 会弹出一个快捷action菜单
  • Cmd + ,: 打开preferences界面
  • Cmd + Shift + 0: 打开documentation
  • Cmd + 0: 隐藏/显示左边的navigator窗口
  • Ctrl + Cmd + Shift + A: 看git提交历史

文件导航

  • Shift + Cmd + O: 按文件名查找
  • Ctrl + Cmd + J: 跳转到定义. 效果同: Ctrl + Cmd + Click
  • Ctrl + Cmd + 左右方向键: 在最近打开的几个文件间切换
  • Ctrl + 5: recent files

运行

  • Cmd + B: Build
  • Cmd + R: Run
  • Cmd + U: Run Tests
  • Cmd + Shift + K: clean build folder

Simulator

  • Cmd + S: 截屏
  • Cmd + K: show/hide soft keyboard
  • Cmd + L: 锁屏

Debug

  • 在debug的时候看变量的值: po xxx, 其中xxx是你想看的变量名
  • 在debug的时候可以看debug view hierarchy, 可以拖拽旋转显示层级, 左边会有树形结构
  • 打开/关闭debug区域: Shift + Cmd + Y
  • 把光标移到console: Shift + Cmd + C
  • clear console: Cmd + K
  • 看device log: Window → Devices and Simulators

Storyboard

  • Ctrl + Drag: 设置上下的constraint; 添加outlet/action
  • Cmd + Shift + L: 显示添加控件的object library
  • Cmd + Alt + Enter: Show Assistant Editor
  • 加Navigation Controller: Editor → Embed in → Navigation Controller
  • 让storyboard显示情况符合constrains: Editor → Resolve Auto Layout Issues → Update Frames

Xcode不是很方便的几个地方

以下是几个觉得不是很方便的地方, 也不知道有没有更好的解决方案.

  • 没有一个很好的看提交历史和diff的功能. 解决办法: 在github上看, 或者利用其它软件.
  • 全文搜索没有快捷键, 只能点左上角的放大镜按钮.
  • 重命名没有快捷键. 右键(或者是Ctrl + Click) → Refactor → Rename. 如果是局部变量可以Cmd + Click, 弹出的菜单里有重命名.
  • 提取方法没有快捷键. 右键(或者是Ctrl + Click) → Refactor → Extract Method.
  • 看调用栈没有快捷键. 右键(或者是Ctrl + Click) → Find → Find Call Hierarchy.
  • 自动加import: 对于找不到类的报错, 在Android中可以Alt + Enter, 自动添加import, iOS不行, 只能自己复制粘贴import语句.
  • 如何复制一个文件?
  • 如何移动某一行?
  • 还有一个我最不理解Xcode的地方, 就是没有自动import的功能. (如果IDE报错一个类找不到, 在Android Studio中可以通过Alt+Enter来自动import, 有时候有多个, 那么可以选择一下.) 但是Xcode只报错找不到, 然后没有任何方法自动添加和提示, 似乎记住这些类来自那个包是开发者的责任, 然后你需要手动添加.

Bonus: 从命令行打开项目

其他ide都有用命令行打开项目的功能, cd到项目目录然后:

  • Android Studio: studio . (需要Tools -> Create Command-line Launcher..)
  • IntelliJ: idea .
  • Visual Studio Code: code . (首先cmd + shift + p -> install code command in PATH).

为了可以用同样的形式xcode .打开项目文件, 我们可以在.zshrc文件中添加一个alias:

alias xcode='open -a Xcode'

具体取决于你的Xcode在applications中叫什么名字, 比如我的:

alias xcode='open -a "Xcode 13.2.1.app"'

References

[Android开发学iOS系列] 工具篇: Xcode使用和快捷键的更多相关文章

  1. [Android开发学iOS系列] 语言篇: Swift vs Kotlin

    Swift vs Kotlin 这篇文章是想着帮助Android开发快速学习Swift编程语言用的. (因为这个文章的作者立场就是这样.) 我不想写一个非常长, 非常详尽的文章, 只是想写一个快速的版 ...

  2. [Android开发学iOS系列] Auto Layout

    [Android开发学iOS系列] Auto Layout 内容: 介绍什么是Auto Layout. 基本使用方法 在代码中写约束的方法 Auto Layout的原理 尺寸和优先级 Auto Lay ...

  3. [Android开发学iOS系列] iOS写UI的几种方式

    [Android开发学iOS系列] iOS写UI的几种方式 作为一个现代化的平台, iOS的发展也经历了好几个时代. 本文讲讲iOS写UI的几种主要方式和各自的特点. iOS写UI的方式 在iOS中写 ...

  4. [Android开发学iOS系列] 快速上手UIKit

    快速上手iOS UIKit UIKit是苹果官方的framework, 其中包含了各种UI组件, window和view, 事件处理, 交互, 动画, 资源管理等基础设施支持. 按照前面的介绍, 用U ...

  5. [Android开发学iOS系列] ViewController

    iOS ViewController 写UIKit的代码, ViewController是离不开的. 本文试图讲讲它的基本知识, 不是很深入且有点杂乱, 供初级选手和跨技术栈同学参考. What is ...

  6. iOS系列 基础篇 07 Action动作和输出口

    iOS系列 基础篇 07 Action动作和输出口 目录:  1. 前言及案例说明 2. 什么是动作? 3. 什么是输出口? 4. 实战 5. 结尾 1. 前言及案例说明 上篇内容我们学习了标签和按钮 ...

  7. Android开发—智能家居系列】(二):用手机对WIFI模块进行配置

    在实际开发中,我开发的这款APP是用来连接温控器,并对温控器进行控制的.有图为证,哈哈. 上一篇文章[Android开发—智能家居系列](一):智能家居原理的文末总结中写到: 手机APP控制智能温控器 ...

  8. iOS系列 基础篇 05 视图鼻祖 - UIView

    iOS系列 基础篇 05 视图鼻祖 - UIView 目录: UIView“家族” 应用界面的构建层次 视图分类 最后 在Cocoa和Cocoa Touch框架中,“根”类时NSObject类.同样, ...

  9. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

随机推荐

  1. 即时通讯IM,是时代进步的逆流?看看JNPF怎么说

    JNPF快速开发平台所包含的第四个重要的开发框架是即时通讯沟通工具.即时沟通工具的目的是让各大企事业单位在各种业务工作流程环境下实现实时无缝协同办公,打破信息数据孤岛,形成高效的层级流转审批和各流程环 ...

  2. MathType7安装使用及please restart word to load mathtype addin properly的问题

    MathType7安装使用及please restart word to load mathtype addin properly的问题.最近在自己的电脑上安装Mathtype7,把遇到的问题和解决办 ...

  3. Tarjan 连通性

    Tarjan 连通性 Tarjan 爷爷的代表作,图的连通性问题直接解决 两个核心数组: \(dfn_u\):\(u\) 的 dfs 序 \(low_u\):\(u\) 及 \(u\) 的后代通过返祖 ...

  4. npm切换到国内华为云的镜像

    npm下载包很慢?不能忍,切换到国内华为云的镜像吧. npm config set registry https://repo.huaweicloud.com/repository/npm/ npm ...

  5. C语言学习之我见-strlen()字符串长度函数

    strlen()函数,负责给出字符串的长度.注意是字符串的长度,不是字符数组的长度. (1)函数原型: size_t __cdecl strlen(const char *_Str); (2)头文件` ...

  6. 聊聊Adapter模式

    今天我们聊一个最简单的设计模式,适配器Adapter.跟以往一样,我们还是从一个例子出发. 一个例子 最开始的结构 假设我们有个数据分析软件,其中包含了数据收集器和数据分析器,数据收集器基于XML格式 ...

  7. 自然常数e的由来以及计算机为什么是二进制

    背景 ​ 昨晚我在看一本书,叫<数学极客>,看到第六章<e:不自然的自然数>,这个数最早开始接触应该是高一的时候,那时候问老师,这个数是怎么来的,老实说,和圆周率一样,是一个常 ...

  8. 查询效率提升10倍!3种优化方案,帮你解决MySQL深分页问题

    开发经常遇到分页查询的需求,但是当翻页过多的时候,就会产生深分页,导致查询效率急剧下降. 有没有什么办法,能解决深分页的问题呢? 本文总结了三种优化方案,查询效率直接提升10倍,一起学习一下. 1. ...

  9. 『现学现忘』Git后悔药 — 27、版本回退介绍

    目录 1.什么版本回退 2.需要了解两个知识点 (1)HEAD是什么 (2)HEAD指针用法 3.git reflog命令介绍 1.什么版本回退 版本回退也可以叫回滚. 若修改过的文件,不仅添加到了暂 ...

  10. Apache:dbutils 开源JDBC工具类库

    commons-dbutils jar:下载 package com.jdbc.tools; import org.apache.commons.dbutils.QueryRunner; import ...