在学习Swift

这段时间一直在学习 Swift 这门语言,平时闲暇时间都用来学习或思考人生了,所以这些天没怎么写东西。

经过这几天学习,发现 Swift 这门语言挺好的,你别说还挺喜欢。如果专注 Apple 生态开发,Swift 是绕不过去的「砍」。

如果这么说,让人感觉 Swift 是一道坎。这门语言学起来概念确实有点儿多,而且关键字也多,但是一旦掌握,代码写起来其实还挺舒服的。很多语法以及关键字的存在,是为了更好的代码阅读体验以及语言的安全性考虑。

关于应用场景,除了开发 Apple 家的 App,还可以做 Server 端的开发。据说去年开始,社区又衍生出了嵌入式的分支。作为独立开发者,对于中小型 Web 项目,Vapor 足够稳定,上手也简单,各种基础设施其实已经挺完善的了。只不过对于企业级的应用,可能相关配套设施还差一些,但这不仅仅是语言本身的问题了。按照现在的发展趋势,假以时日会越来越完善。

Swift 数据类型

Swift 的数据类型很有意思,即便是基本类型其实也是结构体。

值类型 枚举(enum) Optional
值类型 结构体(struct) Bool、Int、Float、Double、character、
String、Array、Dictionary、Set
引用类型(reference type) 类(class)
常见数据类型
  • 整数类型:Int8、Int16、Int32、Int64、UInt8、UInt16、UInt32、UInt64
  • 在32bit平台:Int 等价于 Int32;在 64bit 平台,Int 等价于 Int64
  • 整数的最值:UInt8.max、Int16.min
  • 一般情况下,建议直接使用 Int
  • 浮点类型:Float,32 位,精度只有 6 位;Double,64 位,精度至少 15 位

Swift 语言编译流程

Swift 这门语言编译器的后端是基于 LLVM 的,编译器的前端是 SwiftC,也就是指 Swift 的编译器。

Swift 编译器

Swift 编译器将 Swift 语言编译成 LLVM IR,也就是 LLVM 的中间语言,LLVM
的编译器后端编译成相应的 CPU 可执行文件。

关于 Swift 编译器的相关文档,详情可参考 Swift Compiler 官方文档。

通常,SwiftC 存放在 Xcode 内部:

Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swiftc

一些常见的操作如下:

  • 生成语法树:swiftc -dump-ast main.swift
  • 生成最简洁的 SIL 代码:swiftc -emit-sil main.swift
  • 生成 LLVM IR 代码:swiftc -emit-ir main.swift -o maiin.ll
  • 生成汇编代码:swiftc -emit-assembly main.swift -o main.s

Swift 的编译流程如下所示:

又开始收藏网站书签了

差不多有将近十年时间没有用过类似收藏网站书签的功能了,最多也就是 Safari 或者 Chrome 上点击一下收藏。

近些年,除了工作开发会用到 Chrome 以外,Safari 对于日常使用来说已经足够了。所以过往的十年间,如果说仅仅保存网站链接,或者收藏文章链接,直接就用 Safari 就够了。而且,基于 iCloud 还可以做到三端同步。

这期间也尝试过 Pocket App,但还是没有使用起来,具体的原因嘛,没有功能上特别客观的原因,比如某某功能不支持之类的。但每次使用的时候,总是感觉这个 App 太「笨重」了,很多功能对我来说没有用,每次启动找个链接也不是很方便。所以日常使用过程中,打开的频率就很低,直至最后被系统自动「卸载」。

前些日子,在 Fediverse 上看到有人在用 Raindrop,出于好奇,下载下来试了一下,使用下来,还蛮契合我当前需求的,所以就用了一段时间,功能刚刚好。

这款 App 的核心功能就是书签管理,Apple 生态下可以做到三端同步,还可以备份到 Dropbox 或 Google Drive。对于个人来说,免费功能就够用了。App 启动很快,找链接很方便,不启动的时候也不会乱弹窗。不过呢,弹窗功能日常也是被关掉的,所以日常也不太感受到。

Raindrop 可以跟很多第三方 App 集成,而且还有官方开放的 API,整个生态做的很 open。

这么多年了,书签管理这个需求照理说应该很成熟了,但是到现在还在有人尝试埋坑,🤔

今天开始学习 iOS 开发了。

开始学习的意思是「系统」的重新学习。

虽然十几年前做过两年 iOS 开发,但是如今的 iOS 开发生态已经天差地别。所以对于我来说,就当重新学习了。

为什么要学习 iOS 开发?

因为,想改变世界……嗯,其实是想给自己打工,自由一些。用自己喜欢的技术,做属于自己的产品。

学习的资源是「A Best-in-Class iOS App」,一共五本书。看这系列书籍的分类,还是挺专业的,基本上主要的开发基础都涉及到了。读完这五本书基本上应该就算是入门了,对于 iOS 的开发知识体系应该就会有一个初步的框架,剩下的就可以不断的单点完善这个框架了。

Apple Music 古典音乐 App 终于将要在 1 月 23 日大陆上线啦!

期盼已久的古典音乐终于来了。之前一直在 Apple Music 里找古典音乐,虽然也能听,但总是得人肉找曲目,有没有先不说,对于入门级的爱好者来说,还是有点儿烦。

现在这下舒服了,上个月订阅费涨了一块钱也算值了。

(≧▽≦)/♫

今天 Apple 的 Vision Pro 在美国正式可以订购了。

目测,我还是对 Vision Pro 蛮有信心的。我认为两到三年的时间吧,开始逐步丰富属于 Vision Pro 自己的应用生态,前期可能更多的是 iOS 和 macOS 上的存量应用。原因呢,很主观吧,没什么客观依据,不赞同就当没看到吧,:)

今天开通了Xcode Cloud,感受了一把。

我感觉如果是个人开发者,一次只开发一款 App 的话,每月 25 小时的计算时间可能还真不需要额外付费。

马上就要年底了,开始计划 2024 要做的事情了。

今天早上收到 Apple 开发者的邮件,里边提到 Xcode Cloud 服务会在正式收费之后,给已经购买开发资格的开发者每个月提供 25小时的免费计算时间。

我还没有体验过 Xcode Cloud 服务。但直觉上看,应该够独立开发者日常使用了,吧……

或许是因为这个消息在邮件里没有特别大的标题,导致大家好像都没人讨论这个事情……_(:з」∠)_

如果每月 25 小时的计算时间够独立开发者日常使用,那这推广做的很失败啊……

当然,如果刚刚不够用,那这消息宣布的还挺鸡贼的。

╮(╯▽╰)╭