『第三章』雨燕栖息地:Swift 开发环境

在这里插入图片描述

在本篇博文中,您将学到如下内容:

  • 1. Swift 开发平台
  • 2. Swift 集成开发环境 Xcode?
  • 3. 原型试验场:Playground
  • 4. 另一种尝试:iPad 上的 Swift Playgrounds
  • 5. Swift 交互实验室:Swift REPL
  • 总结

咫尺春三月,寻常百姓家。为迎新燕入,不下旧帘遮。
翅湿沾微雨,泥香带落花。巢成雏长大,相伴过年华。

1. Swift 开发平台

虽然目前在 Linux 和 Windows 上也可适当的小撸几发 Swift 代码,但要想正经八百的学习 Swift 语言,macOS 还是舍我其谁般的最佳选择。

在这里插入图片描述

对于  来说,未来向 silicon 芯片全线迈进绝对是大势所趋,但选择 intel 或是 apple silicon 芯片(M1,M2)的 Mac 作为学习开发主机其实都无所谓。可能某些 iOS/iPadOS 模拟器新特性的测试在 M1 芯片上兼容性更好,毕竟 A系列处理器和 M2 从血缘上说更近一些。

在这里插入图片描述

也可能某些第三方库在 M1 芯片上编译时会存在兼容问题,但随着时间的推移这些都不是事儿。

在这里插入图片描述

现在  官方商城全线上架的都是 silicon 芯片 的 Mac,随着  silicon 芯片 Mac 上软件生态的日趋成熟,绝大多数第三方 App 都能原生执行并充分利用 ARM64 架构的威力以达到最佳性能。

如果小伙伴们选择的是 intel 架构的 Mac,那么机型不要太老:2018 年以后的为佳。

当然,在 iPad 上也可学习 Swift 编程,我们会在本文后面做进一步介绍。

2. Swift 集成开发环境 Xcode?

在 Mac 上做过开发的小伙伴不会不知道 Xcode 这款开发工具,它类似于 Windows 上的 Microsoft Visual Studio(简称VS)。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Xcode 不仅仅是一款 IDE ,它包含了 App 一整套从零开始到上架完整流程的工具集,包括但不限于:

  • 代码、界面和资源编辑器
  • SpriteKit、SceneKit 场景编辑器
  • 数据库(CoreData)管理器
  • 强大的调试环境(LLDB)
  • 应用 UI 探查和调试器
  • 完善的单元测试(Unit Test)环境
  • 开发证书管理
  • 源代码控制(git)工具
  • 国际化资源管理器
  • Playground
  • 性能监控剖析器:Instruments
  • App 归档、打包以及上传工具
  • 模拟器管理
  • Xcode Cloud 实现持续集成和交付
  • 完整的开发文档

在这里插入图片描述

我们可以从 Mac 上的 App Store 直接安装 Xcode,不过更推荐的做法是从  开发官网(https://developer.apple.com/)下载安装:

在这里插入图片描述
在这里插入图片描述

为了精简 Xcode 的体积,从 14.0 开始,苹果将模拟器平台(iOS/iPadOS、WatchOS、tvOS、visionOS等)从 Xcode 中剥离出来,所以下载安装 Xcode 之后,我们还需要单独从  开发网站下载和安装所需的模拟器。

在这里插入图片描述

或者,我们也可以进入 Xcode 中完成模拟器的下载和安装:

在这里插入图片描述

在本专栏博文中,所有测试主要都在 iOS 模拟器上运行,所以我们只需额外下载它即可。

Xcode 可以创建很多类型的开发项目,在本系列博文中我们只会用到其中两种:iOS App 和 Playground。
在这里插入图片描述

我们会在后续博文对这两种项目类型做进一步的介绍。

在 Mac 上 Swift 的入门学习中,我们更推荐 Xcode 这种集成开发环境,而不是简单的代码编辑器。


更多 Xcode 使用的小技巧,请小伙伴们移步如下链接观赏:

  • Xcode 超简单实用小秘技让撸码进入新境界
  • Xcode 14之大变化详细介绍

3. 原型试验场:Playground

之前说过,Xcode 中包含 Playground 类型的项目,它特别适用于验证小段代码或原型的开发。

如下所示,我们可以在 Xcode 的全局菜单中依次选择 File -> New -> Playground… 新建一个 Playground 项目:

在这里插入图片描述

类似于其它语言的交互式解释器(比如 ruby 的 irb 或 pry),我们可以随着感觉和心灵真实想法非常直接与纯粹的随性撸码:

在这里插入图片描述

我们后续章节中若不做特殊说明,大部分实验代码在 Playground 中运行。

不得不承认,虽然 Playground 非常方便,但它还是有缺陷的:

  • 启动速度慢
  • 不稳定、时常崩溃、挂起
  • 无法直接使用外部库
  • 无法下断点

关于 Playground 使用的更详细介绍,请小伙伴们移步其它相关博文中观赏:

  • Xcode中Playground运行代码无响应的极简解决方法
  • 吐槽一下Xcode中的Playground
  • Xcode:Playground中延时调用的新写法
  • Playground中格式注释语法
  • Swift3的playground中对UI直接测试支持的改变
  • Xcode的playground中对于SpriteKit物理对象的更新为何无效
  • Xcode在playground的quick look框中显示对象自定义视图

4. 另一种尝试:iPad 上的 Swift Playgrounds

如果小伙伴们手头没有 Mac,那么在 iPad 上还有另一种 Playgrounds 可供选择。注意它和 Xcode 中的 Playground 类似但不完全一样。

iPad 上的 Playgrounds 是一款单独的 App,可以在 AppStroe 中下载,在 Mac 的应用商店中也有对应的 Mac 版本:

在这里插入图片描述

从 2022 年开始,苹果对 iPad 上的 Playgrounds 做了重大升级,它创建的项目可以存储在 Cloud 中,并可以随时同步到 Mac 上继续进行开发。而且,通过 Playgrounds 可以将编写好的项目直接上传到应用商店中,彻底抛开 Xcode 的桎梏。

iPad(或 Mac) 上的 Playgrounds 在某些情况下可以代替 Xcode 中 Playground 使用,因为前者更加稳定,更具互动性;而且其中包含海量 Swift 编程教学项目,可以进一步激发初学者的兴趣。

在这里插入图片描述

如果决定在 iPad 上开发,有条件可以搭配蓝牙键盘和鼠标,这样撸码更加自然。

关于更多 Playgrounds 的介绍,请小伙伴们移步如下链接中进一步观赏:

  • WWDC 2022:iPad上开发App不再是梦?新版Playgrounds来袭!

5. Swift 交互实验室:Swift REPL

除了以上几种选择,我们还可以通过 Swift REPL(交互解释器)来更“轻便”的学习 Swift 开发。

在这里插入图片描述

在 Mac 中打开终端,敲入如下命令:

swift repl

进入交互时编译环境后,我们可以创建和使用变量、类与结构、函数、闭包等元素,还可以导入其它库和框架以实验我们任何极具创意的头脑风暴:

在这里插入图片描述

总结

在本篇博文中,我们介绍了 Mac 上的主力开发工具 Xcode,并讨论了学习 Swift 语言的几种方式和平台:Xcode iOS App 项目、Xcode Playground,iPad(Mac)Swift Playgrounds 以及 Swift REPL 交互环境。

在后续的学习中,我们可以任选一种方式来验证示例代码,推荐大家亲自动手尝试来感受一下这些学习工具的魅力。

在后三篇博文中,我们将进入“正题”来介绍 Swift 基本语法和类型,到时见喽!😉

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【RTOS学习】软件定时器 | 中断处理

🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 软件定时器 | 中断处理 🏀软件定时器⚽守护任务守护任务的调度 ⚽使用软件定时器的函数…

多级缓存入门

文章目录 什么是多级缓存JVM进程缓存环境准备安装MySQL导入Demo工程导入商品查询页面 初识Caffeine Lua语法初识Lua第一个lua程序变量和循环Lua的数据类型声明变量循环 条件控制、函数函数条件控制 多级缓存安装OpenRestyOpenResty快速入门反向代理流程OpenResty监听请求编写it…

【linux】麒麟v10安装Redis哨兵集群(ARM架构)

安装redis单示例的请看:麒麟v10安装Redis(ARM架构) 安装服务器 ​Hostname​IP addressmaster,sentinel192.168.0.1slave1,sentinel192.168.0.2slave2,sentinel192.168.0.3 下载安装包 (三台都操作) wget https://re…

施工进度难以把控,项目失控怎么办?

在施工项目中,施工进度的控制是非常重要的,它直接关系到项目是否能够按时完成以及项目成本的控制。然而,有时候由于各种原因,施工进度可能会难以把控,导致项目失控。那么,当项目失控时,我们应该…

Ansible上通过roles简化playbook演示介绍

目录 一.roles介绍 1.作用 2.role的目录结构 3.role和tasks的执行优先级顺序 二.自定义一个httpd的角色 1.完整目录结构展示 2.主要的各个目录配置 (1)vars目录和templates目录 (2)tasks目录和handlers目录 &#xff08…

云原生Docker数据管理

目录 Docker的数据管理 数据卷 数据卷容器 容器互联 容器中管理数据主要有两种方式: 数据卷(Data Volumes)数据卷容器(Data Volume Dontainers) Docker的数据管理 数据卷 数据卷是一个供容器使用的特殊目录&a…

题目 1120: C语言训练-“水仙花数“问题2python详解)——练气三层后期

✨博主:命运之光 🦄专栏:算法修炼之练气篇(C\C版) 🍓专栏:算法修炼之筑基篇(C\C版) 🍒专栏:算法修炼之练气篇(Python版) ✨…

今天玩到一个微信钓鱼小游戏,很有趣,居然还能玩萝卜刀

这款钓鱼冠军微信小游戏很有创意,除了传统的钓鱼玩法,居然还融合了黄金矿工的玩法,很不错的想法,而且居然还能玩最近比较火的萝卜刀,快来扫码体验一下吧,或者微信里搜索 《钓鱼冠军》小游戏,认…

2023年Q3线上生鲜水产数据分析:市场不景气,销额同比下滑44%

事实上,今年线上的生鲜生意市场并不景气。无论是Q1季度还是Q2季度,线上(京东平台)的销售额均同比去年下滑了10%左右。 然而到了Q3季度,整个下滑态势愈发严峻。可以看到鲸参谋数据显示,7月至9月生鲜水产在京…

Jmeter性能测试 —— TPS拐点寻找

寻找TPS性能拐点1、准备脚本①在本地电脑调试Jmeter压测脚本 ②上传到压测机Jmeter所在的服务器 2、执行压力测试①执行压测脚本 jmeter –n –t xianchengzuse.jmx ②记录业务压测数据 3、监控服务器性能指标 ①监控CPU输入top命令 ②监控内存 free –m ③jstat监控sweep和…

基于WebRTC构建的程序因虚拟内存不足导致闪退问题的排查以及解决办法的探究

目录 1、WebRTC简介 2、问题现象描述 3、将Windbg附加到目标进程上分析 3.1、Windbg没有附加到主程序进程上,没有感知到异常或中断 3.2、Windbg感知到了中断,中断在DebugBreak函数调用上 3.3、32位进程用户态虚拟地址和内核态虚拟地址的划分 …

大数据-Storm流式框架(四)---storm容错机制

1、集群节点宕机 Nimbus服务器 硬件 单点故障?可以搭建HA jStorm搭建 nimbus的HA nimbus的信息存储到zookeeper中,只要下游没问题(进程退出)nimbus退出就不会有问题, 如果在nimbus宕机,也不能提交…

特约|数码转型思考:Web3.0与银行

日前,欧科云链研究院发布重磅报告,引发银行界及金融监管机构广泛关注。通过拆解全球70余家银行的加密布局,报告认为,随着全球采用率的提升与相关技术的成熟,加密资产已成为银行业不容忽视也不能错过的创新领域。 作为…

机器学习实验一:KNN算法,手写数字数据集(使用汉明距离)(2)

KNN-手写数字数据集: 使用sklearn中的KNN算法工具包( KNeighborsClassifier)替换实现分类器的构建,注意使用的是汉明距离; 运行结果:(大概要运行4分钟左右) 代码: import pandas as…

记录一次时序数据库的实战测试

0x1.前言 ​ 本文章仅用于信息安全防御技术分享,因用于其他用途而产生不良后果,作者不承担任何法律责任,请严格遵循中华人民共和国相关法律法规,禁止做一切违法犯罪行为。文中涉及漏洞均以提交至教育漏洞平台。 0x2.背景 ​ 在某…

023-第三代软件开发-自定义Button

第三代软件开发-自定义Button 文章目录 第三代软件开发-自定义Button项目介绍自定义Button第一类型-加声音第二类型-加样式 第三类型-减声音总结一下存在一点小问题 关键字: Qt、 Qml、 Button、 关键字4、 关键字5 项目介绍 欢迎来到我们的 QML & C 项目&…

Redis缓存(缓存预热,缓存穿透,缓存雪崩,缓存击穿)

目录 一, 缓存 1, 什么是缓存 2, 什么是热点数据(热词) 3, 缓存更新策略 3.1 定期生成 3.2 实时生成 二, Redis缓存可能出现的问题 1, 缓存预热 1.1 什么是缓存预热 1.2 缓存预热的过程 2, 缓存穿透 2.1 什么是缓存穿透 2.2 缓存穿透产生的原因 2.3 缓存穿透的解…

优思学院|中质协六西格玛考试形式是什么样的?

中质协的考试形式主要为单选和多选题,近年也有加了一小部分填空题,和国际认证考试有很大区别,因为美质协(ASQ)、国际精益六西格玛研究所(ILSSI),又或者著名的PMP项目管理认证等都是采…

Java性能分析工具

Arthas 官网:简介 | arthas Arthas 是 Alibaba 开源的 Java 诊断工具,深受开发者喜爱。Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业…

Spark SQL概述与基本操作

目录 一、Spark SQL概述 (1)概念 (2)特点 (3)Spark SQL与Hive异同 (4)Spark的数据抽象 二、Spark Session对象执行环境构建 (1)Spark Session对象 (2)代码演…