Day 16 – 善使 Xcode 做学问
Swift —— 100 天从新手到大师
它的目标是那些想要学习如何构建真正的 iOS 应用程序的开发者
如果说的是你 —— 准备好了吗
正如前文所说,我们要开始实现一个真正可用的的应用程序。
工欲善其事必先利其器
作为通俗意义上的入门编程教材,和其他教材一样,我们需要花点时间来整理一下关于 iOS 开发 IDE(Integrated Development Environment)—— Xcode 的使用。
紧跟时代
一个合格的 iOS 开发者应该保持对最新官网信息的敏感程度。建议在一个月内,至少有一天粗略查看一下 News and Updates,了解最新的消息通知。一般这个就是属于 iOS 开发者的谈资,包括但不限于最新的审核标准和一些可以在 App Store 上发布的新功能。
在每年的 WWDC 过后,iOS 新版本随之而来,这个时间节点对于 iOS 开发者来说也是比较重要的。所以官网关于 WWDC 的模块,对 iOS 开发者来说也是极度重要的。
Xcode
Xcode 是 Mac 应用程序,用来为 iOS, macOS, tvOS 和 watchOS 构建应用程序。
作为关于 Xcode 的使用指南,我们先讨论一下如何下载/更新 Xcode。
通过 Developer 官网下载 Xcode
打开 More Downloads for Apple Developers 网址,选择你需要版本的 Xcode 压缩包。
进入这个页面的前提是你需要在 Developer 官网有一个开发者账户。
即可以是免费的,也可以是付费的。
下载 Xcode 之后,打开并解压缩 .xip
文件,这需要一定的时间。然后将 Xcode.app 文件拖放到 〜/Applications
文件夹中。最后,启动 Xcode 应用程序。然后会弹出:
在此提示下单击 Install 按钮。Xcode 将尝试在 Mac 上安装 Xcode 命令行工具。它们是用于使用 Xcode 编译应用程序的CLI工具。
如果你实在不想注册一个开发者账户的话,你同样还可以通过 Xcode Releases 获取 Xcode 的 压缩文件。然后复现上述步骤,安装 Xcode。
更新
通过开发人员手动安装 Xcode 的缺点是 Xcode 不会自动更新。但是,这不一定是一件坏事,你可以使用这种方法并排安装多个版本的Xcode。这对于调试或试用 Xcode 的 Beta 版本很有帮助。
紧跟时代的一个好处是随时接触新鲜事物,但是由于稳定性等多方面问题。一般我们的打包 Xcode 一般都不是最新的。
通过 Mac App Store 下载/更新 Xcode
一个让你保持最新版本 Xcode 的好办法是使用 Mac App Store 下载 Xcode。
•
打开 Mac App Store 并登录你的 Apple ID
•
在左边的搜索框,搜索 Xcode
•
点击右上角的 Get/Install 按钮下载并安装 Xcode
通过 App Store 下载 Xcode 一般来说有点慢。但是现在完成以后,一旦正式版 Xcode 更新了,你可以得到更新的通知。
通过 App Store 更新 Xcode 的缺点时,你无法同时安装多个版本的 Xcode,且很难降级版本。
mas-cli
一个能避免 App Store 下载缓慢的一种方式就是使用 mas-cli
命令行工具。
Mac App Store 的一个简单的命令行工具,为脚本编制和自动化而设计。
$ mas list
409183694 Keynote 讲演 (10.3.5)
1380446739 InjectionIII (2.2.0)
1450874784 Transporter (1.2)
会列举当前你通过App Store 下载的工具
通过 upgrade
命令更新你的未更新应用程序。
$ mas upgrade
or
$ mas upgrade 409183694
该命令行工具的唯一缺点就是,它必须要你从 App Store 下载,这样子才能通过命令进行升级。
what new
Xcode 12 有两个主要的更新点,你可能需要注意
多标签
新的多标签功能能使你在同一个 Window 里面同时打开多个文件并允许你进行排列。在 Xcode 11 之前,同一个 Window 里面只会存在一个标签页。
代码补全优化
Xcode 12 优化了代码补全的方式。
新的补全UI只显示需要的信息,在输入时占用更少的屏幕空间。而且补全的呈现速度也快得多,因此可以以最快的速度继续编码。
Playground
在 Xcode 中使用 Playground 快速编写一些 Swift 代码,尝试使用新的 Swift 语法,或者提高你的 Swift 算法技能。Xcode 的 Playground 是学习Swift 编程的一个好方法。
到目前为止,我们所需要的例子都可以在 Playground 进行调试。
在实际使用 Xcode 创建工程之前,我们详细了解一下关于 Playground 的使用吧。
边栏(结果/实时)
每次在编辑器中输入 Swift 语句时,都会评估 Playground 页面中的所有代码,并在边栏中显示结果。源代码编辑器可以正常运行,并将实时显示代码完成提示和语法错误。
除了键入代码区域以外,作为学习工具,最有用的 Playground 模块可能就是边栏了。
•
将鼠标悬停在某个分隔值,然后点击眼睛图标以 快速查看
•
点击矩形按钮以在代码中内联 显示结果
显示结果
显示结果有两个好处,一个是能在代码中内联显示结果,另一个对于数组或算法类程序,我们可以看到计算结果
结果框还支持伸缩,并且边栏还有循环语句的次数。
如果你有简单的线图需求,可以通过 显示结果
的方式生成一个简单的线图
调试
按住 Command 键,同时单击代码中。弹出一个小菜单。这在 Xcode 中以及在 Playground 中都有效。有以下几个选项
•
Jump to Definition
将跳转到该变量在代码中首次定义的位置
•
Show Quick Help
将显示有关符号的信息和代码文档
•
Callers
helps 识别调用特定函数的代码位置
Live View
之前的例子中我们讲述 Textfield 控件的使用,我们只能通过快速查看显示制作的样式。
但是还能实时运行一下我们的 Textfield 控件。
在 Playground 中键入以下代码
import Foundation import UIKit import PlaygroundSupportlet frame = CGRect(x: 0.0, y: 0.0, width: 150.0, height: 30.0) let customView = UITextField(frame: frame) customView.backgroundColor = UIColor.white customView.placeholder = "redColor" customView.tintColor = UIColor.orange PlaygroundPage.current.liveView = customView
运行代码,然后点击 Editor -> Live View
,在页面的右边就可以出现一个实时的界面。
Swift Playgrounds 系列就是通过这种途径来进行编程教学的。
分段运行
在 Playground 中,您甚至可以将代码运行到特定行。将鼠标移到 gutter
上,编辑器左侧的行号。将鼠标悬停在行号上时,会出现一个蓝色的播放按钮。单击该行上的 播放
按钮将运行代码到该点。对查看中间结果非常方便。
Markup
在调试示例中我们展示了如何查看代码文档。Swift 使用 Markup 创建以呈现文档模式显示格式化文本,来显示代码的快速帮助(Quick Helper)。
从语法的角度上使用使用 ///
或者在 /**/
中嵌套使用都可以
///
///
///
or
/*
*/
主要需要注意的是字符之间的间隔
格式化快速帮助(Quick Helper)
当我们在创建方法或自定义组件库时,合理的添加注释是一个好习惯。在这里我将介绍使用 Markup 自定义一个快速帮助。
我们的目标是实现一个如上所示的一个快速帮助文档
它总共分成以下几部分
•
Summary:
总结,也就是 12 的代码补全优化 。
•
Declaration:
方法多对象定义头部,不包含 {}
部分,无法修改,自动生成
•
Discussion:
描述的主题部分,在这里你可以插入代码,使用有序无序列表,加入粗体,斜体,引用,甚至你可以插入链接
•
Important:
定义强调
•
Author:
定义作者
•
Version:
定义版本信息
•
Parameter
和 Parameters:
前面是针对单参数,后面是针对多参数,语法不一样
•
Throws
抛出异常
•
Returns
返回
•
Declaraed In:
定义的位置,无法修改,自动生成
如此,我们可以使用 Mark Up 定义一个 Quick Helper
// - Parameter newElement: 如果只有一个参数,请使用Parameter /** 描述部分,注意与内容主题分割这里是总体表述 可以插入各种字体 **粗体** *斜体* `引用`
可以插入代码
var numbers = [1, 2, 3, 4, 5] numbers.append(100) print(numbers) // Prints "[1, 2, 3, 4, 5, 100]"
可以插入 `*` 或者 `数字` 的表格
1. 我是iOS 成长指北
* 我是iOS 成长指北
**Find More** [iOS成长指北](https://juejin.cn/user/3298190611456638)
可以增加重要的信息
- important: 这是一个强调
- Parameters: - element: 这个是参数 *1* - element1: 这个是**参数** `2`.
- Complexity:这是复杂度
- Throws:这个部分定义抛出异常,必须要定义抛出异常
- Returns: 这个部分定义返回值,能在quick helper 展示的一定得有个返回值
- Author: iOS成长指北
- Version: 版本号 1.0.0
*/
func showInfo(_ element: Int, _ element1: Int) throws -> Int {
}
注意几点
•
Parameters
、
Parameter
、
Returns
和、
Throws
只有他们存在的时候才会提示
•
注意格式,使用 tab
键和空格
制作 Playground 文档
笔者使用分页的 Playground 处理之前的 Demo,为此笔者使用了 Markup 创造了自己的 Demo 管理文档
笔者利用 Markup 实现了一个文章列表,并且支持多页面的跳转
/*: # 100 Days Of Swift**Autor** iOS 成长指北

- [Day1 - First steps in Swift](Day1) - [Day2 - Complex data types](Day2) - [Day3 - Operators and conditions](Day3) - [Day4 - Loops](Day4) **** [Next](@next) */
小结
关于 Markup 其实还有很多更深入的用法,这里笔者就不一一深入了,如果作为一个纯 iOS 的博客,至少在本系列的前15天,我们都可以使用 Markup 在Playground 中进行处理。后续笔者可能会单独创建一个 Playground 用于读者在 iPad 上实践代码。
总结
今天我们主要介绍了关于 Xcode 下载和更新,已经如何使用 Playground 学习 iOS。顺道介绍了Swift 中强大的 Markup 语法。
本文的提纲来自于 hackingwithswift 的 《100 Days of Swift》,然后根据每一个知识点进行总结
欢迎点赞、转发、评论、在看。
如果有任何问题,欢迎留言交流