Xcode 超简单实用小秘技让撸码进入新境界

在这里插入图片描述

概览

Xcode 是开发  应用不可或缺的王牌主力军,虽然 Xcode 中一些常用使用姿势想必大家都已驾轻就熟,但其中仍有一些隐藏宝藏小技巧不为人知。

充分挖掘它们可以极大加速和方便秃头码农们日常的撸码行为。

一般的,它们分为两类:方便代码开发和加速源代码编辑

在本篇博文中,就让我们分别来选取一些为大家介绍吧:

  • 概览
  • 代码片段(code snippet)快速插入
  • 定制代码片段
  • “并发重构”:同时修改多处源代码
  • 总结

在这里插入图片描述

本文所有实例都在 Xcode 15.0 中操作演示。

Let‘s go!!!😉


代码片段(code snippet)快速插入

在 Xcode 中,对于一些常用代码片段,每次重复输入会非常繁琐,比如下面这段:

struct Foo {private var _value = 0var value: Int {get {_value}set {_value = newValue}}
}

以上,我们围绕 _value 为 Foo 创建了一个 value 计算属性。其中,我们分别设置了它的 get set 读写器。在包含大量计算属性的结构或类中,每次都手动创建非常麻烦。

别急,Xcode 非常人性化的为我们提供了代码片段快捷命令,只需敲入 vargetset 然后补全代码即可:

在这里插入图片描述

所有常用代码片段快捷命令一览,可以按下 Shift + Command + L 键呼出:

在这里插入图片描述

值得注意的是,只有在正确上下文中代码片段快捷命令才会被识别,比如下面的 docatch 快捷命令在错误语境中无法被触发,这进一步降低了犯错的可能:

在这里插入图片描述

使用 Xcode 现成代码片段快捷命令没什么了不起的,更厉害的是我们可以恣意定义自己的代码片段快捷命令。

定制代码片段

资深秃头码农们经过多年耕耘,时常会总结出一些精华代码小段。为了避免它们成为沧海遗珠,我们可以在 Xcode 中将其制成代码片段并赋予特定的快捷命令。

比如,我们写了一个供快速测试用的结构 Test,为了能在所有项目中使用它,我们可以将其制作为代码片段。

struct Test: Identifiable, CustomStringConvertible {var name: Stringvar id: String {name}var timestamp: Date?var description: String {"\(name) @ \(timestamp ?? Date.distantPast)"}
}

在 Xcode 编辑器中全选上面 Test 结构的代码,然后在鼠标右键点击弹出的菜单中选择 Create Code Snippet…

在这里插入图片描述

在新建代码片段窗口中补全相关信息,尤其是其中的 Completion 内容,它就是自定义代码片段对应的快捷(补全)命令:

在这里插入图片描述

现在,快速测试时我们可以极速创建 Test 测试结构定义:

在这里插入图片描述

自定义代码片段快捷命令在分步骤演示开发流程时也十分有用,我们可以循序渐进的设置好若干快捷命令,随后依次递进展示给小码农们看:

在这里插入图片描述

我们还可以非常方便的编辑已保存的代码片段,操作非常简单,小伙伴们可以自行尝试。

“并发重构”:同时修改多处源代码

上面我们介绍了使用代码片段快捷命令简化开发的方法,下面让我们从另一个角度来聊聊如何为源代码编辑加速助力。

在使用 Xcode 日常开发中,重构绝对是重度操作。

比如,如果我们要将下面 SwiftUI 代码中所有 Text 字体样式从 .title 改为 .headline 并做字体加粗该如何操作呢?

struct TestView: View {var body: some View {VStack {Text("大熊猫侯佩 @ csdn!").font(.title)HStack {Text("大熊猫侯佩 @ csdn!").font(.title)}HStack {VStack {Text("大熊猫侯佩 @ csdn!").font(.title)Text("大熊猫侯佩 @ csdn!").font(.title)}}}}
}

可能小伙伴们脑海中涌现的第一个念头是全局替换,不过全局替换无法提供自动代码补全而且很容易替换出错。

Xcode 编辑器包含了一个很好的解决方案,我称之为“并发重构”,它可以同时多选和修改指定内容。我们只需选中所有需要重构的内容,然后做出改变即可,改变会同时发生而且代码补全会保证多处更改不会出错。

具体操作为:

  1. Command + F 呼出搜索框
  2. 填入想要修改的内容
  3. Option + Command + G(或 Shift + Option + Command + G 逆序选中)依次选中每处需要重构的内容
  4. 直接更改即可

在这里插入图片描述

或者,我们还可以用更简单的步骤:

  1. 在编辑器中选中需要修改的内容
  2. Command + E 将其加入搜索(搜索框并不会弹出)
  3. Option + Command + G(或 Shift + Option + Command + G 逆序选中)依次选中每处需要更改的内容
  4. 直接更改即可

这种方法不需要呼出搜索框即可并行修改,更加便捷:

在这里插入图片描述

对于一些在可视范围内相同内容同时重构的场合,使用“并发重构”不会出错并且带自动补全,妥妥的奇门遁甲 + 神兵利器!棒棒哒!!!💯🚀

总结

在本篇博文中,我们介绍了两个非常简单、但却会让 Xcode 使用进入一个新境界的操作秘技,相信大家会喜欢上它们。

感谢观赏,再会!😎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/92369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Anaconda Jupyter

🙌秋名山码民的主页 😂oi退役选手,Java、大数据、单片机、IoT均有所涉猎,热爱技术,技术无罪 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 获取源码,添加WX 目录 前言An…

idea环境下如何打包可运行jar?

工作中有时候偶尔写一些工具类、小程序,可是java程序员制作一个可运行jar实在折腾,利用idea开发环境,可以快速打包自己的可运行jar。具体怎么操作呢? 创建一个空白的java项目并完成自己的程序开发 完成java代码: /**…

B. Comparison String

题目&#xff1a; 样例&#xff1a; 输入 4 4 <<>> 4 >><< 5 >>>>> 7 <><><><输出 3 3 6 2 思路&#xff1a; 由题意&#xff0c;条件是 又因为要使用尽可能少的数字&#xff0c;这是一道贪心题&#xff0c;所以…

(搞定)排序数据结构(1)插入排序 选择排序+冒泡排序

目录 本章内容如下 一:插入排序 1.1插入排序 1.2希尔排序 二&#xff1a;选择排序 2.1选择排序 三:交换排序 3.1冒泡排序 一:插入排序 1.1直接插入排序 说到排序&#xff0c;其实在我们生活中非常常见&…

VisionTransformer(ViT)详细架构图

这是原版的架构图&#xff0c;少了很多东西。 这是我根据源码总结出来的详细版 有几点需要说明的&#xff0c;看架构图能看懂就不用看注释了。 &#xff08;1&#xff09;输入图片必须是 224x224x3 的&#xff0c;如果不是就把它缩放到这个尺寸。 &#xff08;2&#xff09;T…

PHP生成二维码带图标代码实例

PHP生成二维码带图标代码实例&#xff08;PHP QR Code二维码生成类库&#xff09; public static function png($text, $outfilefalse, $levelQR_ECLEVEL_L, $size3, $margin4, $saveandprintfalse) { $enc QRencode::factory($level, $size, $margin); return $enc->…

Bee2.1.8支持Spring Boot 3.0.11,active命令行选择多环境,多表查改增删(bee-spring-boot发布,更新maven)

天下大势&#xff0c;分久必合&#xff01; Hibernate/MyBatis plus Sharding JDBC Jpa Spring data GraphQL App ORM (Android, 鸿蒙) Bee Spring Cloud 微服务使用数据库更方便&#xff1a;Bee Spring Boot; 轻松支持多数据源&#xff0c;Sharding, Mongodb. 要整合一堆的…

简历项目优化关键方法论-START

START方法论是非常著名的面试法则&#xff0c;经常被面试官使用的工具 Situation:情况、事情、项目需求是在什么情况下发生Task:任务&#xff0c;你负责的做的是什么Action:动作&#xff0c;针对这样的情况分析&#xff0c;你采用了什么行动方式Result:结果&#xff0c;在这样…

【接口技术】总线课堂习题

1&#xff1a;CPU在执行OUT DX, AL指令时&#xff0c;&#xff08;&#xff09;寄存器的内容送到地址总线上 A&#xff0c;DL B&#xff0c;DX C&#xff0c;AX D&#xff0c;DL 解答&#xff1a;B out指令是把AL的数据输出到DX的端口&#xff0c;因此AL寄存器的内容送到…

uniapp app 导出excel 表格

直接复制运行 <template><view><button click"tableToExcel">导出一个表来看</button><view>{{ successTip }}</view></view> </template><script>export default {data() {return {successTip: }},metho…

Unity把UGUI再World模式下显示到相机最前方

Unity把UGUI再World模式下显示到相机最前方 通过脚本修改Shader 再VR里有时候要把3D的UI显示到相机最前方&#xff0c;加个UI相机会坏事&#xff0c;可以通过修改unity_GUIZTestMode来解决。 测试用例 测试用例如下&#xff1a; 场景包含一个红色的盒子&#xff0c;一个UI…

Linux作业2

Linux中的 stdin 、stderr、stdout分别是什么意思 在 Linux 中&#xff0c;stdin、stdout 和 stderr 是标准的输入、标准的输出和标准的错误的缩写&#xff0c;它们是与终端相关联的默认文件描述符&#xff0c;用于处理输入和输出。以下是它们的详细含义&#xff1a; stdin&am…

Java类与对象

文章目录 引出概念快速入门对象内存布局属性概念创建对象访问属性对象分配机制成员方法&#x1f996;注意事项和细节 引出 ●看一个养猫猫问题 张老太养了两只猫猫: 一只名字叫小白, 今年3岁, 白色. 还有一只叫小花, 今年100岁, 花色. 请编写一个程序, 当用户输入小猫的名字时…

zookeeper mac安装

目录 1.下载zookeeper安装包 2.解压安装包 3.修改配置文件 4.启动服务端 5.启动客户端 这边工作中用到了zookeeper组件&#xff0c;但自己独立安装弄的不太多&#xff0c;这边本机mac装一个做测试使用 以下是安装记录&#xff0c;可以作为参考 从以下链接zookeeper版本列…

当面试被问到jvm(Java虚拟机)时,如何将面试官引入自己的节奏?

本文目录 前言快问快答抛砖引玉锦上添花好书推荐总结 前言 作为一名Java开发工程师&#xff0c;不管是校招还是社招jvm一定是必问必会的知识点。虽然说真正开发中用到的不多&#xff0c;甚至可以说用不到&#xff08;对于刚入行或者Java初级&#xff09;&#xff0c;但是当面试…

Redis实现API访问频率限制

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

ffmpeg、ffplay在线安装,离线导出整个程序,移植到其他服务器使用(linux系统)

环境说明 以ubuntu系统作为说明 在线安装 下面命令会同时安装ffplay和ffmpeg sudo apt-get install ffmpeg怎么验证安装成功&#xff1f; 输入ffmpeg命令 ffmpeg&#xff0c;如图则说明安装成功 转储可执行程序和依赖的文件 找到安装路径&#xff0c;一般在/usr/bin目录…

Neo4j 与 Cypher 基础

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 简介 Neo4j 是用 Java 实现的开源 NoSQL 图数据库。从2003年开始开发&#xff0c;2007年正式发布第一版&#xff0c;其源码托管于 GitHub。 与常见的关系型数据库不同&#xff0c;Neo4j 基于图图结构来表示…

10.01

服务器 #include<myhead.h> //键盘输入事件 int keybord_events(fd_set readfds) {char buf[128] "";int sndfd -1; //从终端获取一个文件描述符&#xff0c;发送数据给该文件描述符对应的客户端bzero(buf, sizeof(buf));int res scanf("…

CSP-J第二轮试题-2020年-1.2题

文章目录 参考&#xff1a;总结 [CSP-J2020] 优秀的拆分题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 #2样例输入 #2样例输出 #2 提示样例 1 解释数据规模与约定 答案1答案2 [CSP-J2020] 直播获奖题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1 样例 …