Xcode使用技巧

Xcode菜单

Xcode快捷键

常用快捷键 功能
command + shift + N 新建项目
command + N 新建文件
command + delete 删除一行
command + Z 撤销上一步操作
command + / 注释
command + ] 或者 [ 前后缩进
command + option + ] 或者 [ 一行代码上下移动
command + control + 上下方向键 .h .m 文件切换
command + 左右方向键 光标移动到行头或行尾
command + control + 左右方向键 后退和前进
command + R 运行
command + B 编译
command + shift + k clean缓存
shift + 上下⽅方向键 选中代码
command + , 打开偏好设置
command + option + Enter 显示辅助编辑器
command + Enter 返回标准编辑器
command + 0 打开/隐藏左侧导航区域
command + option + 0 打开/隐藏右侧工具区域
command + shift + Y 打开/隐藏下方调试区域
command + shift + o 弹出快速查找文件窗口
command + shift + 0 打开官方文档窗口

日常开发技巧

修改工程名、类名

Xcode里修改工程名、类名☀️

Xcode 环境配置

Xcode 环境配置最佳实践

代码区样式设置

进入 Xcode 偏好设置(快捷键 +, ),切换至字体颜色与设置面板(Fonts & Colors),你可以选择预设的几个风格,也可以尝试自定义配色,比如我们要把背景色换成苹果绿,则需要把 Background 这一项的 Hex color 值设置为#C7EDCC

快速查找、切换文件

当你工作在一个庞大的项目中时,使用【快速打开】功能可以为你提供很大的便利。

具体方法是:打开 File 菜单,选择 Open Quickly 子菜单(快捷键:⌘+Shift+O ),输入关键字即可过滤文件,按回车键(⏎)即可快速打开切换到该文件:

快速更改同名变量

  1. 在代码编辑区域,点击定位需要更改名称的变量;
  2. 打开 Edit 菜单,选择 Refactor 子菜单中的 Rename… 命令。 此命令允许您统一修改文档中的某个变量。
  3. 输入该变量的新名称 —> 预览 —> 保存。

统一修改某一方法内某一变量名

快捷键:Cmd + Control +e

  1. 在方法中,点击选择变量名;
  2. 打开 Editor 菜单,选择 Edit All in Scope 命令。 在目标区域内编辑全部子菜单。
  3. 点击键盘修改变量名,所有同名变量就会被同步更改。

选中整个方法体

打开 Editor 菜单,选择 Structure 子菜单中的 Balance Delimiter… 命令。平衡界定符命令能帮助你选择整个方法体。

代码的查找和替换

  1. 打开 Find 菜单,选择 Find and Replace 子菜单。
  2. 输入要查找的关键词和要替换的新名称。
  3. 你可以选择替换当前的代码和所有符合的代码。

将代码段提取为方法

  1. 拖动选中需要提取的代码;
  2. 打开 Edit 菜单,选择 Refactor 子菜单中的 Extract… 命令。此命令允许您将一段代码转化为一个方法。
  3. 输入新建的方法名称 —> Preview预览 —> 保存。

提取后的结果:

- (void)addImage {
    UIImage *image = [UIImage imageNamed:@"github"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    [self.view addSubview:imageView];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    [self addImage];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

代码自动补全

这个是最常用的方法了:

  1. 打开 Editor 菜单,选择 Show Completions 命令(快捷键 ESC )。
  2. Xcode就会列出所有可能的方法供我们选择。

代码方法块的折叠

先定位到某一方法体中,打开 Edit 菜单,选择 Code Folding 子菜单:

  • Fold / Unfold :折叠/显示当前方法体中的所有代码行;
  • Fold / Unfold Methods & Functions :折叠/显示所有方法体中的所有代码行;
  • Fold / Unfold Comment Blocks :折叠/显示注释块;
  • Focus Follows Selection :专注于当前方法体。

代码整洁小技巧#pragma mark

pragma 预处理指令的两个作用:

  1. 整理代码;
  2. 防止编译器警告;

#pragam mark 一般是写在方法与方法之间的预处理指令,类似于起注释说明作用。

但是,重要的是,使用 #pragam mark 预处理指令可以将方法按照功能分组,使代码更整洁、更具有逻辑性。而且查找起来也非常方便。

#pragam mark 不会对代码本身起任何作用,但是Xcode会根据 #pragam mark 组织文件中的方法。使用 #pragam mark 后,代码编辑器中的跳转栏是这样显示的:

代码编辑器中的跳转栏

使用方法

* 添加分割线

pragma mark —

* 添加功能说明

pragma mark 自定义的方法

* 同时添加分割线和功能说明

pragma mark — 自定义的方法(注意留空格)

推荐的代码组织方式:

经常使用 #pragam mark ,可以使代码更加清晰有条理。一旦之后需要重新审查代码,就会感受到事先使用了 #pragam mark 的好处。

推荐阅读

使用代码片段库

代码片段,顾名思义,就是一“块”嵌入的代码框架,提前将所需的代码框架放入代码片段库,可能发生改动的地方用代码补全占位符代替,使用时,用自定义的字符串触发相应代码片段,在占位符处填写所需代码即可完成高效率的开发。

代码片段使用示例 init:

如果在某个 Objective-C 的实现文件中输入 init ,Xcode 就会自动列出一组备选项,其中包括 init 方法。选择后,Xcode 就会在当前位置加入一段 init 方法的默认实现代码。

代码片段库(Code Snippet Library)位于 Xcode 的工具区域(快捷键:⌥⌘0)库面板选择条中的第二项。

直接打开工具区域和代码片段库面板的快捷键:⌘⌃⌥2

在代码片段库中,Xcode 自带的代码片段是只读的,不能编辑,但是我们可以创建自定义的代码片段。

添加自定义代码片段

编辑窗口

编写好你的代码片段之后,将选中的代码段拖拽至代码片段库 Code Snippet Library 中的编辑窗口如下:

标题 说明
Title 标题
Summary 描述概要说明
Platform 平台:All/ iOS/ Mac OS/ TV OS/ Watch OS
Language 代码语言:Objective-C 等
Completion Shortcut 代码片段的触发字符串(在源代码文件中输入该字符串后,会触发 Xcode 自动加入相应的代码片段)
Completion Scopes 代码使用范围:可选类接口部分、类实现部分等

代码补全占位符:<#expression#>

自定义的代码片段

UITableViewDataSource

把如下一段通用的 UITableViewDataSource 方法选中拖拽入代码片段库:

#pragma mark - UITableViewDataSource

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return <#number of section#>;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return <#number of rows#>;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:<#@"reuseIdentifier"#> forIndexPath:indexPath];
    
    // Configure the cell...
    
    return cell;
}

编辑如下:

以后在使用 Objective-C 语言编写 iOS 项目时,在类的实现文件中,输入 UITableViewDataSource ,就会列出该代码片段备选项。

UITableViewDelegate

UITableView 委托协议的两个实现方法加入代码片段库:

#pragma mark - UITableViewDelegate

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return <#expression#>;
}

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    // when selected row of indexPath
    
}

cellReusreIdentifier

static NSString * const cellReusreIdentifier = @"<#UITableViewCellStyleDefault#>";

处理循环引用经常要用到的两行代码,也可以加入代码片段库:

weakSelf

__weak __typeof(self)weakSelf = self;

strongSelf

__strong __typeof(weakSelf)strongSelf = weakSelf;

注释代码

你也可以根据你的喜好将注释代码添加进代码片段库

/** <#注释#> */

编辑窗口:

声明了一个属性,要写注释?当然你可以输入 //说明,使用代码片段就可以这么玩了, 输入 xx

pragma mark

这个代码片段可以配合上面刚刚提到的 代码整洁小技巧#pragma mark 一起使用,美滋滋🙂

#pragma mark - <#string#>

NSException

子类有自己的指定初始化方法,但又不想覆盖父类的指定初始化方法 init,可以写如下的方法,主要是用来防止开发创建对象时用错初始化方法。

- (instancetype)init {
    @throw [NSException exceptionWithName:@"Method Undefined"
                                   reason:@"Use Designated Initializer Method"
                                 userInfo:nil];
    return nil;
}

编辑自定义代码片段

选中代码片段库中需要重新编辑的代码片段,在弹出的编辑窗口点击 Edit 按钮,完成后点击 Done 按钮。

删除自定义代码片段

选中代码片段库中需要删除的代码片段,键盘 Backspace 或者 Del 并确认即可删除代码片段。

参考

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

推荐阅读更多精彩内容

  • 1、xcode中如何用快捷键注释一个程序块 注释:选中程序块,然后command+/, 这可以以每行前面加//的...
    harrytc阅读 626评论 0 0
  • 上篇文章中对导航器区域的介绍只是单单介绍了符号导航器的使用技巧,其中还有测试导航器,调试导航器和断点导航器这三个比...
    小唐羽锋阅读 3,505评论 1 51
  • 【前言】常见的数据库都有函数,hive自身也有函数。分为内置函数和自定义的UDF函数,自定义函数例如(sum 、c...
    先生_吕阅读 8,697评论 0 5
  • 自从成为素食主义者,我变得容易感动,眼眶经常湿湿的。 从前的我,无悲无喜,生命没有轮廓,情感没有起落。快乐时不觉快...
    肖小跑阅读 572评论 0 0
  • 心的陪伴 郭相麟 在灵魂深处 需要心的陪伴 没有责备 只有倾听 没有要求 只有理解 心的...
    郭相麟阅读 168评论 0 0