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

news2024/9/24 3:25:26

在这里插入图片描述

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

  • 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 基本语法和类型,到时见喽!😉

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

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

相关文章

单源最短路径 -- Dijkstra

Dijkstra算法就适用于解决带权重的有向图上的单源最短路径问题 -- 同时算法要求图中所有边的权重非负(这个很重要) 针对一个带权有向图G , 将所有节点分为两组S和Q , S是已经确定的最短路径的节点集合,在初始时为空&…

重构之美:Java Swing中 如何对指定行文本进行CSS样式渲染,三种实现思路分享

文章目录 需求分析Document 应用彩蛋 需求分析 在Swing中,如果期望实现对JTextArea 或者 TextPane等文本区域实现单行渲染改怎么做?如上图所示 总的来说有两种实现方案 文本行数可控,那么构造一组JLabel集合按表单顺序添加,这样可…

视频相关学习笔记

YUV 和rgb一样是一种表示色彩的格式,Y表示亮度,UV表示色度(U是蓝色投影,V是红色投影),只有Y就是黑白的,所以这个格式的视频图片可以兼容黑白电视,所以彩色电视使用的都是YUV 存储方…

查找算法-斐波那契查找法(Fibonacci Search)

目录 查找算法-斐波那契查找法(Fibonacci Search) 1、说明 2、算法分析 3、C代码 查找算法-斐波那契查找法(Fibonacci Search) 1、说明 斐波那契查找法又称为斐氏查找法,此查找法和二分法一样都是以分割范围来进…

第12章 PyTorch图像分割代码框架-1

从本章开始,本书将会进行深度学习图像分割的实战阶段。PyTorch作为目前最为流行的一款深度学习计算框架,在计算机视觉和图像分割任务中已经广泛使用。本章将介绍基于PyTorch的深度学习图像分割代码框架,在总体框架的基础上,基于PA…

kuaishou web端did注册激活 学习记录

快手web端 did 注册激活的流程大概如下: 1.访问web端的接口,主动触发滑块,拿到滑块信息 2.然后滑块验证did 获取captchaToken 3.携带captchaToken访问接口 4.最后校验web端的did 是否激活 最后激活以后的效果如下: 经过测试&…

微服务-服务拆分

文章目录 服务拆分及注意事项服务拆分案例案例代码分析 服务拆分及注意事项 每个服务有独立的数据库,订单模块需要查询用户信息时,通过调用用户模块的接口,自身的数据库并没有用户信息。 服务拆分案例 案例结构 案例有2个微服务,…

【跟小嘉学 Rust 编程】三十三、Rust的Web开发框架之一: Actix-Web的基础

系列文章目录 【跟小嘉学 Rust 编程】一、Rust 编程基础 【跟小嘉学 Rust 编程】二、Rust 包管理工具使用 【跟小嘉学 Rust 编程】三、Rust 的基本程序概念 【跟小嘉学 Rust 编程】四、理解 Rust 的所有权概念 【跟小嘉学 Rust 编程】五、使用结构体关联结构化数据 【跟小嘉学…

基于Kubesphere容器云平台物联网云平台Devops实践

基于Kubesphere容器云平台物联网云平台Devops实践 项目背景 ​ 公司是做工业物联网相关业务的,现业务是云平台,技术栈 后端为 Springboot2.7JDK11 ,前端为 Vue3Ts,需要搭建自动化运维平台以实现业务代码自动部署上线,…

【C++笔记】如何用检查TCP或UDP端口是否被占用

一、检查步骤 使用socket函数创建socket_fd套接字。使用sockaddr_in结构体配置协议和端口号。使用bind函数尝试与端口进行绑定,成功返回0表示未被占用,失败返回-1表示已被占用。 二、步骤详解 2.1 socket函数 socket 函数是用于创建套接字的函数&…

【MySql】9- 实践篇(七)

文章目录 1. 一主多从的主备切换1.1 基于位点的主备切换1.2 GTID1.3 基于 GTID 的主备切换1.4 GTID 和在线 DDL 2. 读写分离问题2.1 强制走主库方案2.2 Sleep 方案2.3 判断主备无延迟方案2.4 配合 semi-sync方案2.5 等主库位点方案2.6 GTID 方案 3. 如何判断数据库是否出问题了…

Django 实战开发(一)项目搭建

1.项目搭建 用pycharm 编辑器可以直接 New 一个 Django 项目 2.新建应用 python manage.py startapp demo项目结构如下: 3.编写第一个Django 视图函数 /demo/views: from django.http import HttpResponse def welcome(request):return HttpResponse("welcome to dja…

品牌媒介工作流程是什么,媒体投放目标怎么做?

品牌媒介其实说简单也很简单,说难也很难,简单在于其实事情流程简洁,难呢,在于很多东西如果不亲身体验是无法领悟到精髓的。今天为大家分享下品牌媒介工作流程是什么,媒体投放目标怎么做? 我们怎么才能在媒体…

JWT的封装、[Authorize]的使用

JWT的封装 需要安装两个包。 包1:System.IdentityModel.Tokens.Jwt Install-Package System.IdentityModel.Tokens.Jwt 包2:Microsoft.AspNetCore.Authentication.JwtBearer Install-Package Microsoft.AspNetCore.Authentication.JwtBearer 我们创建一…

【Unity】3D跑酷游戏

展示 finish_all * 方块跑酷 1.教程链接 翻墙:https://www.youtube.com/watch?v9ZEu_I-ido4&listPLPV2KyIb3jR53Jce9hP7G5xC4O9AgnOuL&index3 2.基础制作 最终成果 2.1 基本场景 1.创建Cube作为跑道 1)记得把位置Reset; 2&#…

C#使用mysql-connector-net驱动连接mariadb报错

给树莓派用最新的官方OS重刷了一下,并且用apt install mariadb-server装上“mysql”作为我的测试服务器。然后神奇的事情发生了,之前用得好好的程序突然就报错了,经过排查,发现在连接数据库的Open阶段就报错了。写了个最单纯的Con…

CSDN学院 < 华为战略方法论进阶课 > 正式上线!

目录 你将收获 适用人群 课程内容 内容目录 CSDN学院 作者简介 你将收获 提升职场技能提升战略规划的能力实现多元化发展综合能力进阶 适用人群 主要适合公司中高层、创业者、产品经理、咨询顾问,以及致力于改变现状的学员。 课程内容 本期课程主要介绍华为…

【发展史】鼠标的发展史

最早可以追溯到1952年,皇家加拿大海军将5针保龄球放在能够侦测球面转动的硬件上,这个硬件再将信息转化成光标在屏幕上移动,用作军事计算机输入。这是我们能够追溯到的最早的依靠手部运动进行光标移动的输入设备。但当时这个东西不叫鼠标&…

Ps:套索工具

Ps 的套索工具有三种,主要通过手动绘制的方式创建选区。 套索工具 Lasso Tool 又称“自由套索工具”,可绘制任意形状的选区,灵活快速但不够精确,是仅需粗略选区时(比如,生成式填充等)最常用的工…

XTU-OJ 1178-Rectangle

题目描述 给你两个平行于坐标轴的矩形,请判断两者是不是相交(面积有重合的部分)? 输入 第一行是一个整数K,表示样例数。 每个样例占两行,每行是4个整数,表示一个矩形的对角线点的坐标&#xff0…