Category Archives: iOS

Strict Concurrency Check for Older Projects

前言

前陣子 Swift 5.10 釋出了,同時代表 Swift 正準備進入下一個 major release — Swift 6。Swift 6 這條路算來已經走了超過四年,可喜可賀。

每次這樣的大改版,總是帶給開發者們各種期待及焦慮。雖然升上 4 & 5 時都還算平順,但 Swift 3 可是當年 Swift 的 early adopters 難以忘懷的大改,著實讓人傷了些腦筋。

這次從 Swift 5 升到 6 的一個改進重點是在 concurrency 領域。這些改變對一些老 AppKit/UIKit 專案可能有很大的影響,改動的幅度讓人聯想起當年的 Swift 3。所以在 Swift 5 就有一個 “Strict Concurrency Check” 的 compiler 選項,讓大家可以提前開始準備。

Continue reading

Swift Protocols and Generics, Part 2: Protocol as Type 和 Type Erasure 有什麼關係?

這是一系列以「建構基礎概念」為目標,希望能幫助 Swift 開發者更加瞭解 protocols 和 generics 的文章。文章索引、相關資源以及較詳細的介紹,請見系列簡介。希望讀者在看到文章裡提出問題的時候(請注意 [Q] 標示),能夠一起試著解釋看看,好深化你個人的理解。

上次在 Part 1 裡,我們試著分辨 protocol 和其他的 type 有什麼不一樣。當 protocol 作為 type 使用時,它被稱為 existential type。本篇會假設讀者已經熟悉 Part 1 的內容。

這次的篇幅較長,但是與其拆成數篇,我想把閱讀方式交由讀者自己決定。如果這些對你來說是比較不熟悉的概念,我建議分次分段閱讀,這樣吸收的效果會更好。

Essential Question

如果有人問你這個問題,你會怎麼解釋?[Q]

核心問題:

Protocol as type,也就是 existential type,和 type erasure 之間有什麼關係?

延伸問題:

Type erasure 有什麼替代方案?它們和 type erasure 有什麼性質上的不同?

Continue reading

Swift Protocols and Generics, Part 1: Protocol 和其他 Type 有什麼不一樣?

這是一系列以「建構基礎概念」為目標,希望能幫助 Swift 開發者更加瞭解 protocols 和 generics 的文章。文章索引、相關資源以及較詳細的介紹,請見系列簡介

希望讀者在看到文章裡提出問題的時候(請注意 [Q] 標示),能夠一起試著解釋看看,好深化你個人的理解。

Essential Questions

如果有人問你這個問題,你會怎麼解釋?[Q]

核心問題:

Protocol 作為一個 type,和 enum, struct, class… 等等其他的 type 有什麼不一樣?

延伸問題:

在 Swift 5.6 以後,protocol type 的 variables 前面要加上 any 一字。為什麼要改成這樣?

Continue reading

DrillAI 筆記:Overengineering vs. Scaffolding

最近我把以前的一個 personal project 挖出來翻新,從中得到了許多奇奇怪怪的開發經驗。趁印象仍深,做點記錄。

對軟體工程師來說,這是個老掉牙的問題:實作一個功能的時候,要先保持簡單,避免 overengineer — 過度設計?還是預先拆設出架構、抽象化,來讓以後擴充功能的時候更順暢省力?

我想,雖然對於什麼是 “clean code” 普遍有各種原則,適當的平衡應該還是要視個人自身的經驗和能力和 project 的特性來拿捏。畢竟什麼東西是容易的,或是能判斷之後一定會用上的,並沒有標準答案。我其實也沒有什麼高見可以教別人,只是遇到了兩個相似的情況,產生了點想法,把它整理出來。

Continue reading

一段黑歷史:錄製 Auto Layout 課程

YouTube Playlist Thumbnails

大約 2016 到 2018 年間內,我曾經試著開一堂 iOS Auto Layout 的線上課程。我做為 iOS 開發者的經驗有限,但依著自己的數學背景以及對教育的興趣,那時覺得自己在這方面能做點什麼。

直到現在我仍認為,Auto Layout 中等到進階的知識,在網路上過於欠缺且分散。這世上並不存在一堂我心目中的 Auto Layout 中高階課程。

我閉門錄了些影片,且把課程預定的規模縮編了幾次,但這堂課從未真正上架。在我做了最後一次縮編,覺得可以先上一版時,SwiftUI 問世。綜合一些其它因素,終於不再歹戲拖棚而停手。而這也是幾個月前的事了。

雖說是個丟臉的失敗史,但也不甘就此淡忘。最近終於有些閒,決定來為這整件事稍做紀錄。文底會提供現有影片的連結,歡迎自由取用。

Continue reading