電影時刻 iOS 2.8.1 版


更新內容

2.8.1 #2025-01-17

  1. 修正開啟電影的「放映時間」時閃退的問題。
  2. 修正 iOS 17 之後開啟網址可能不正確的問題。
  3. 修正 iOS 17 之後不再支援的 API。
  4. 程式碼微調。

開發札記

真的是計劃趕不上變化,為了安裝最新版的 Xcode 16 ,作業系統最低必須是 macOS Sonoma 14.5,而我的 MBP 2017 雖然還很好用,但已經無法升級 OS 到最新版。原本的計劃是在今年 (2025) 才買新的電腦,但是上個 2.8.0 版發佈後,大量出現閃退的錯誤,看 log 很多錯誤都出現在 iOS 17.5 以上的版本,麻煩的是,我的 MBP 的 OS 是 macOS Ventura 13.5,最高只能安裝 Xcode 15.2,而此版本的模擬器最新只能安裝 iOS 17.2,所以完全無法測試。

回顧過去數十年開發 iOS 的歷程,從 2011 年買的第一台蘋果電腦 MacBook Air 開始,到這次買的 Mac mini (M4),花費在設備上的開銷估計在 20 萬以上 (包含 iPhone 手機及 iPad 兼做實機測試用),還沒算每年要繳的開發者年費等等。因此最近這幾年為了節省開支,盡量都在最後關頭才買新的電腦。原本並不急著買 Mac mini (M4),可是為了修這個錯誤,每天都在看蘋果官網什麼時候開賣,終於在 2024/12/05 預購當天就立刻下訂。

原本打算修個 Bug 就好,在新版 Xcode 中才發現有些 API 被棄用或是改過執行行為。例如內嵌瀏覽器的網址原本預設是沒有編碼 (encode) 的,因此我的程式碼會先對網址做編碼才送給瀏覽器,這樣在 iOS 17 之後就會出現奇怪的問題,因為網址被做了兩次編碼。查了 API 才知道在 iOS 17 之後的預設行為改為自動編碼,因此我必須為此增加 iOS 版本的判斷來決定是給它自動編碼或是我自己編碼。

另一個 API 的更新,就是新增行事曆事件的權限有修改,原本的權限包含讀、寫行事曆,而新版改成單純寫入及完全的讀與寫兩種權限,也是花了一點時間修改。在查 API 時還發現 UITableCell 中有一些用了很久的 API 在 iOS 18.2 也要被棄用了,但礙於這次修改拖太久,又快要過農曆年了,只能等下次再來修。