13 報

Share this post

開發者週報 #1

www.ethanhuang13.com

開發者週報 #1

Apple/iOS 開發者的一週大小事 2019/07/29-08/04

13
Aug 4, 2019
3
Share this post

開發者週報 #1

www.ethanhuang13.com

13 的話

謝謝你訂閱 «13的開發者週報»,這是一份給 Apple/iOS 開發者的電子報。

市面上已經有許多英文的 Apple 開發相關的資訊。而我是以台灣的工程師為主要對象來規劃內容,會盡可能與既有的資源有所區隔。舉例來說,我不會放上 Swift by Sundell 或 NSHipster 等的文章連結,或者與 iOS Dev Weekly 重複的內容,除非它們引起了廣泛的討論。

每個禮拜一早上你會收到電子報,內容包括前一週的開發資訊。本期因為有 beta 跟財報的關係,內容比較多。分成幾個區塊:

  • 官方消息。Apple 官方發布的開發者資訊

  • 新聞稿。Apple 官方新聞稿

  • 媒體報導。重要的新聞,以英文媒體優先

  • 社群活動。台灣的 iOS 開發社群的消息。如果你有舉辦活動,或想要透過我發佈社群消息,可以透過 Twitter 或回覆這封電子報來與我聯絡

  • 技術資源。顧名思義

  • Podcast。中文的、與 Apple 開發有關的節目資訊

  • 推特大小事。整理在 Twitter 上台灣開發者有意思的討論

  • And Finally…。這是從 iOS Dev Weekly 學來的,算是每期的趣事小梗吧😜


官方消息

Beta 5 更新

Apple 如期地以每兩週一次的頻率,在 7/29 更新了各平台與 Xcode 至 beta 5。

Release Notes 連結如下:

  • Xcode 11 beta 5(與 beta 4 的 diff)

  • iOS 13 beta 5

  • macOS 10.15 beta 5

  • tvOS 13 beta 5

  • watchOS 6 beta 5

  • Classroom for iPad 3.1 beta 5

小技巧:如果覺得 iOS 的太長看不完,可以先看 tvOS 的抓重點。

注意事項:

Developers using macOS Catalina beta 5 must also update to Xcode 11 beta 5.

有在用 Catalina 開發 SwiftUI 的話,請注意系統跟 Xcode 都要用 beta 5 才行。

Upgrade your iPhone to the newest available version of iOS 13 beta before upgrading any paired watches to watchOS 6 beta or a newer version of watchOS 6 beta. (51366653)

先升級 iOS 再升級 watchOS。

SwiftUI 與 Combine 的改變

今年各 beta 版之間改動最大的是 SwiftUI 與 Combine,所以我特別挑出來。

BindableObject is replaced by the ObservableObject protocol from the Combine framework. (50800624)

原本叫 ObjectBinding 的地方改成 ObservableObject,不用寫 PassthroughSubject。並且可以用 @Published 寫 properties,就不用自己寫 willSet 了。Release Notes 裡也有範例。

Twitter avatar for @luka_bernardi
Luca Bernardi @luka_bernardi
In Beta 5 ObjectBinding is now defined in Combine as ObservableObject (the property wrapper is now @ObservedObject). There is also a new property wrapper @published were we automatically synthesize the objectWillChange publisher and call it on willSet.
Image
8:52 PM ∙ Jul 29, 2019
150Likes53Retweets

SegmentedControl is now a style of Picker. (51769046)

Twitter avatar for @ChangArchie
Archie @ChangArchie
SegmentControl 將在 Xcode 11 beta 5 被捨棄了,取而代之的是 Picker + pickerStyle(SegmentedPickerStyle()) 以行為來說都是在做 pick 沒錯,只是這樣的話就硬是要給一個 label(或是像是附圖的 Text(String())) 測試結果是 SegmentedPickerStyle 並不會顯示標題,所以其實有點多了🤷‍♂️5
Image
2:58 AM ∙ Jul 30, 2019

iOS 13 beta 5 變化

系統提供的功能方面,iMore 整理的很清楚。

值得一提的是捷徑的「自動化」功能暫時被移除。Shortcuts Team 表示會再回來。

Twitter avatar for @ian_mcdowell
Ian McDowell @ian_mcdowell
@mattcassinelli @viticci @johnvoorhees @appstoriesnet We removed these features temporarily, and you can expect them to return 🙂
6:06 PM ∙ Jul 29, 2019
179Likes19Retweets

新聞稿

Apple 提供全新擴增實境 (AR) 藝術課程

課程名稱叫做 [AR]T,嗯。台灣的兩間 Apple Store 都有提供。

Apple 公布第三季財務報告

整體營收比去年同季度增加。iPhone 佔營收的比例首次低於 50%。

細節有興趣的話自己看,本刊不提供投資建議。喜歡看圖表的話,可以參考 MacStories 或 sixcolors。


媒體報導

🇯🇵Apple 計畫於 2019 年在日本新增兩間 Apple Store

據報導,一間會在神奈川県川崎市,另一間在東京的丸の内。選這則新聞主要是想讓你看各種設計精美的 logo。或許還可以搭配下面的日本研討會資訊安排行程。

Twitter avatar for @MichaelSteeber
Michael Steeber @MichaelSteeber
Apple is teasing two new store projects scheduled for 2019 on its retail website ✨9to5mac.com/2019/07/29/two…
Image
11:26 PM ∙ Jul 29, 2019
39Likes5Retweets

🇺🇸LG UltraFine 螢幕提供 5K 版本

新版使用 Thunderbolt 3。不僅支援 Mac,還支援 2018 年款的 iPad Pro(但解析度上限是 4K🧐)。台灣 Apple 官網目前只有販售 5 月推出的 4K 版本。

Apple 加入 Data Transfer Project

DTP 是去年 Google 帶頭提出的計畫,概念很簡單,就是方便使用者把資料搬家到不同的服務(下圖取自白皮書)。之前有 Google、微軟、Twitter、Facebook 等。現在 Apple 也加入了。

Apple 暫停 Siri 的人工改進措施

先前英國衛報曾揭露 Siri 的部分錄音有被外包出去、用人工聆聽來改進結果。現在 Apple 表示他們已經暫停了這項措施。

“We are committed to delivering a great Siri experience while protecting user privacy,” Apple said in a statement to TechCrunch. “While we conduct a thorough review, we are suspending Siri grading globally. Additionally, as part of a future software update, users will have the ability to choose to participate in grading.”


社群活動

🇹🇼iPlayground 將於 8/10 截稿

台灣最大的 Apple 開發者研討會 iPlayground,這屆的議程設計稍微有縮短到每節 40 分鐘。想要登台分享可以把握機會投稿。

購票的話請上 KKTIX(需要打統編的要走這邊)。

議程要等徵稿結束之後才會公布。喵神已經透露他會現身。

Twitter avatar for @onevcat
onevcat @onevcat
我会去讲,欢迎来听!
Twitter avatar for @theiPlayground
iPlayground2019 開賣! @theiPlayground
大家早安。雖然我們還沒有公布議程,而且還在強力徵稿中(快來投!),不過小編也透露一下,門票已經賣出超過 100 張啦🎫🎫🎫。不想錯過的朋友可以評估一下什麼時候要入手👇 https://t.co/uRFamLCJwD
10:50 PM ∙ Jul 29, 2019
28Likes2Retweets

🇹🇼CocoaHeads Taipei 八月份聚會

可可頭台北一如往常地會在每月第二個禮拜四晚上舉辦,也就是 8/8。

想要分享題目的話,可在 Twitter 或 Facebook 報名。

🇯🇵iOSDC Japan 2019 開始售票

iOSDC Japan(官網)是在日本東京舉辦的大型 iOS 研討會。今年的舉辦時間在 9/5-7。一般票是 8,000 日圓。

想知道台灣工程師去參加的經驗,可以參考這幾篇文章:

  • 2017 zonble 前夜祭、本番第一天

  • 2018 Tank Lin 參加經驗

  • 2018 我 寫到一半的參加經驗

事實上,iOSDC 的參加經驗對於催生出 iPlayground 有很大的幫助。

如果你日文不行,或是在考慮的是明年三月的 try! Swift Tokyo 還是 iOSDC Japan,點開下面的舊推文可能會有點幫助:

Twitter avatar for @zonble
zonble @zonble
Try Swift Tokyo 的主要 session 場次大概是由歐美講者以及日本這邊的贊助商講者組成,至於 lighting talk 則很像是由日本講者把 iOSDC 的精華場次講成英文再講一次,所以感覺起來我們台灣人想來這邊當 speaker 有點難度,因為連 lighting talk 都像是日本最優秀的講者對歐美社群的火力展示。
4:27 AM ∙ Mar 23, 2019
Twitter avatar for @bramyeh
bramyeh @bramyeh
iOSDC Japan 如果不會日文去了會不會變觀光... 還是有現場英文口譯呢? 請大神開示,謝謝🙏
12:10 AM ∙ Jul 4, 2019
Twitter avatar for @hokilaJ
Hokila Jan @hokilaJ
去年來 iOSDC, 是想看看日本的業界是怎麼一回事?看到很多🇯🇵特色,深度廣度人數都比🇹🇼多很多,聽了很多 session 學了很多招式。 這次來主要是幫 iPlayground 看怎麼配置,有什麼細節是人家做好可以學習的。主要不是在看 session,寫完考察心得。雖然 conference 還沒結束,就已經想回去了。
4:54 AM ∙ Sep 1, 2018

技術資源

ASCIIwwdc 已上架 WWDC19 影片的全部字幕

ASCIIwwdc 是一個能搜尋所有 WWDC 影片字幕的網站。有時候做研究會派上用場。

Swift Quiz in Review

如果你有 follow objc.io 的 Twitter,應該常常會看到一些很難的 Swift 題目。這些題目不是為了拿來考面試者,只是要多認識語言的特性,答錯不要有壓力🤪。這篇文章整理了過去 20 個題目的統計數據。

MengTo 的 SwiftUI 課程更新至 beta 5

這套課程並不便宜,但是我自己買來看過覺得非常實用,可以快速掌握 SwiftUI 的使用方式,可以說是花錢省時間的範例。而且影片有中文字幕,內容持續在更新。可以先去他們的 YouTube 頻道試看免費的部分(連結不含推薦碼,純粹是覺得好東西要分享)。

Twitter avatar for @MengTo
Meng To @MengTo
All SwiftUI files and code updated for beta 5, including the final app. 🙌 designcode.io/swiftui-courseH
Image
8:12 PM ∙ Aug 1, 2019
110Likes11Retweets

Raywenderlich 的 Fastlane 課程

我沒有訂閱,沒看過內容。不過應該有人會有興趣。

Twitter avatar for @KrauseFx
Felix Krause @KrauseFx
Having learnt a ton from @rwenderlich over the last years, I'm so excited to see they launched a fastlane iOS video course on RayWenderlich 🤗 raywenderlich.com/1259223-fastla…W
Image
9:59 PM ∙ Aug 1, 2019
71Likes4Retweets

Opaque Result Type

Pofat 這篇文章可以當作 weak self podcast 第 2 集的補充資料。

另外可以參考他的 Protocol 文章三部曲。

  1. 還沒寫,效法星際大戰。他說或可以聽 podcast,「預計要寫第一部的內容就在這集都聊差不多了」

  2. 重新檢視 Swift 的 Protocol (二)

  3. 重新檢視 Swift 的 Protocol (三)

CurlDSL

Twitter avatar for @zonble
zonble @zonble
週末小練習:把 curl 語法直接變成 URLSessionTask 執行。
Image
12:53 PM ∙ Aug 3, 2019
Twitter avatar for @zonble
zonble @zonble
Code 在這邊
github.comzonble/CurlDSLContribute to zonble/CurlDSL development by creating an account on GitHub.
12:54 PM ∙ Aug 3, 2019

podcast

weak self podcast

weak self 應該是台灣第一個以 Apple/iOS 開發者為主題的 podcast。由 一三(沒錯就是我😛)、波肥、喬喬主講。

Podcast 就像 RSS 一樣,有 feed URL 就可以在任何 podcast app 上訂閱。說明頁面有各種訂閱方式以及章節功能的介紹。

以下是最新一集的內容簡介:

2: Swift API 設計之原來我不會用 protocol

主題延續上一集的 Swift API 設計,進入了 protocol 與 generic 的領域。


推特上的大小事

這個區塊會放一些台灣的 iOS 開發者在 Twitter 上的討論,或者有些新知的發表不寫文章直接發推。討論串如果有個別回覆,就會變成分支而且不好追,我也沒有辦法全部的推文都貼,所以只抓幾個分支,請你有興趣自己點進去看。標題是我隨意取的,當分隔線而已。討論的話我盡量不放自己的推文,免得像在自己地盤另闢戰場😛

RxSwift 與 .map

Twitter avatar for @rollr76518
陳涵宇 @rollr76518
引用了 RxSwift 之後。 覺得在看到 map {} 都要思考這是個 RxSwift 的 map 還是 Swift Array 的 map 是一件困擾的事。
2:18 AM ∙ Jul 26, 2019
Twitter avatar for @rollr76518
陳涵宇 @rollr76518
@ethanhuang13 @handkid 該行 Code `let groupNames: Observable<[String]?> = groupedChannels.map { $0.keys.sorted().map { $0 } }` 我問:「$0.keys.sorted().map { $0 } 為什麼 sorted() 完還要再 map{} 一次呀?」 同事答:「要把 Observable<[String]> 變成 Observable<[String]?>」
1:45 AM ∙ Jul 29, 2019
Twitter avatar for @yllan
宇宙漂流井底之蛙🐸 @yllan
@rollr76518 @ethanhuang13 @handkid wiki.haskell.org/Functor 1. map { $0 } 應該等於沒有作用 2. map(f).map(g) 要等於 map { g(f($0)) }
wiki.haskell.orgFunctor - HaskellWikiThe Functor typeclass represents the mathematical functor: a mapping between categories in the context of category theory. In practice a functor represents a type that can be mapped over.
2:42 AM ∙ Jul 29, 2019

Objective-C 與 Swift 的 import

Twitter avatar for @gliyao
Liyao Chen @gliyao
寫 Swift 一直有個討厭的地方,因為不用 import headers 所以很容易的就把 dependence 搞的亂七八糟⋯⋯
7:31 AM ∙ Jul 28, 2019
Twitter avatar for @gliyao
Liyao Chen @gliyao
@ethanhuang13 @PofatTseng Bingo! 簡單來說就是守備範圍要變大很多。雖然的確像@PofatTseng 講的一樣,其實到後面都合在一個 module 裡,但是如果裡面有幾個寫一寫要拆出來成為獨立 module 的東西的時候,如果原本的 dependency 就不夠清楚就是地獄了...
5:35 PM ∙ Jul 28, 2019
Twitter avatar for @gliyao
Liyao Chen @gliyao
@ethanhuang13 @marslin_dev @PofatTseng @rollr76518 我能理解你們的痛,但至少有個 import 可以跟寫的人講不要這樣寫,因為結構會變成 blablabla
3:30 AM ∙ Jul 29, 2019
Twitter avatar for @gliyao
Liyao Chen @gliyao
建專案時就把 view 層跟 model 層分成不同的 module ,然後禁止 model 層引用 view 的東西,前陣子聽 podcast 聽到的招數(可是不是每個人都有機會開新專案啊⋯⋯)
3:51 AM ∙ Jul 29, 2019

📊func naming 習慣投票

Twitter avatar for @marslin_dev
Mars @marslin_dev
好奇問一下大家,在設計API 的時候比較傾向用那種呢?
12:56 AM ∙ Jul 29, 2019
Twitter avatar for @marslin_dev
Mars @marslin_dev
最後的結論是 showHint(_ hint: String) 稍稍領先,大概提一下各自的優劣
4:27 AM ∙ Aug 1, 2019
Twitter avatar for @PofatTseng
Pofat @PofatTseng
@marslin_dev 看起來受 objc 時代影響的人比較多 我要幫助官方正名 func show(hint: String) 才是正統解法,這個 formatter 可能捉不到,不知道會不會進 formatter 的 rule
4:22 AM ∙ Aug 1, 2019

Value Type 也有可能存放在 Heap 裡

波肥在 weak self podast 1 講到 Swift 的 Value Type 都是放在 Stack。但其實還有後續。完整的文章可以到他的 blog。

Twitter avatar for @eJamesLin
CJ Lin @eJamesLin
@weak_self 應 @PofatTseng 的邀請,來拋個磚。 聽說 value type 在某些時刻 (存在 class 的 property or closure 中),會存在 heap 中... 這部分有請 @PofatTseng 大大解惑~
3:08 PM ∙ Jul 29, 2019
Twitter avatar for @PofatTseng
Pofat @PofatTseng
@eJamesLin @weak_self 大概寫了點 code 嘗試一下直接改變在 heap 裡位址上的值,class 裡的 value type properties 的確也跟著改變了,可以說明 @eJamesLin 大大說的完全正確 用 Colab 寫大家可以在裡面 run code (請忽略簡體中文介面)
reurl.ccGoogle ColaboratorySign inthis.gbar_=this.gbar_||{};(function(_){var window=this; try{ _.Jd=!_.y||_.mc(9);_.Kd=!_.y||_....
3:41 PM ∙ Jul 29, 2019
4Likes1Retweet

上傳 Swift 開源專案至官方的 CI

我把前些時候寫的 NSAttributedStringBuilder 申請加入到 Swift Source Compatibility Suite,確保未來的 Swift 版本與自己專案的相容性。這個貼文串補充了一些步驟。

Twitter avatar for @ethanhuang13
13 一三 @ethanhuang13
For anyone who are interested in submitting their Swift OSS to Source Compatibility Suite, its very easy. Here is a quick guide before your submit: 1. Fork and check out the source compatibility suite repo
Twitter avatar for @dgregor79
Doug Gregor @dgregor79
Have an open-source SwiftUI-based project? Want to help Swift improve? Please consider adding your SwiftUI-based project to Swift's Source Compatibility suite! https://t.co/LvEcZpcDW8
4:25 AM ∙ Aug 1, 2019
Twitter avatar for @ethanhuang13
13 一三 @ethanhuang13
2. Modify project.json, append your project spec according to README (Important: Path should be your project's local path) 3. sudo xcode-select -s the Xcode you want to use 4. Run ./project_precommit_check project-local-path --earliest-compatible-swift-version 5.1
4:25 AM ∙ Aug 1, 2019
Twitter avatar for @ethanhuang13
13 一三 @ethanhuang13
5. Fix any issues. If no problem, change the path in project.json to your package name(which was local path), and move the whole object to a proper position, sorted by path 6. Commit and push your fork 7. Submit the PR. Of course your should follow the Acceptance Criteria
4:25 AM ∙ Aug 1, 2019

比較 Swift 的 for in 與 forEach

小綠把推文串整理得很清楚了,我就不用麻煩了,哈。

Twitter avatar for @handkid
Green @handkid
整理一下 for in vs. forEach 的比較與使用討論
Twitter avatar for @handkid
Green @handkid
無聊來個討論 foreach vs. for loop 的 使用情境 你喜歡用那個 優缺點分別是 #無聊想題目
3:09 AM ∙ Aug 3, 2019

iOS 13 透過他人裝置尋找已經可以用了

要點開看整串。其實這個原理 Tile 多年前就做到了。不過內建在系統中,尋獲率高得多。

Twitter avatar for @SamTheGeek
Sam Gross @SamTheGeek
Boy do I have a great story for you. That upcoming iOS 13 “find your devices even when they’re offline” feature? It already works, and it works well.
2:05 PM ∙ Aug 1, 2019
86Likes28Retweets

SwiftUI 在 tvOS 的表現如何?

Twitter avatar for @HsuToby
Toby Hsu @HsuToby
SwiftUI x TVUIKit 一起來見證奇蹟的一刻(? 當你試圖用 NavigationView 包 List 的時候,你會發現 Focus 變得很神奇。 一開始他會 Focus 在單一的卡片上,然後就是整排都被 Focus 了,即便你設定 List.focusable(false) 也沒有用。 如果你點進去之後,他會根據你有N張卡片而進了N層!!!
Image
4:12 AM ∙ Aug 2, 2019
2Likes1Retweet

And Finally…

Twitter avatar for @ChangArchie
Archie @ChangArchie
剛剛面試了一位 iOS,他說他平常沒什麼參加聚會,但是去年有去 @theiPlayground ,且今年也報名了 #好我給你過 #技術什麼的其次 #有心重要多了
8:32 AM ∙ Jul 29, 2019
8Likes1Retweet
Twitter avatar for @PofatTseng
Pofat @PofatTseng
@ChangArchie @theiPlayground 幹我刷了兩個履歷上有 iPlyaground 的 #抱歉
11:02 AM ∙ Jul 29, 2019

我編到最後才發現本週 Pofat 的存在感超•級•高。感謝他帶來許多精彩的分享。

下面這個太好笑了,所以我要放第二個。

空著的項目展示了 iCloud 憑空消失的檔案的能力!

Twitter avatar for @BigZaphod
Sean Heber @BigZaphod
That blank bullet point is ominous.
Image
3:40 PM ∙ Aug 1, 2019
66Likes6Retweets

以上就是本期的內容。如果你喜歡,請轉寄或推薦給同事或開發者朋友。有問題或回饋,請直接回覆電子報即可。如果你有想讓 Apple/iOS 開發者知道的資訊,包括文章、開源專案、社群活動等等,也歡迎寄送給我。

填寫超短的回饋問卷

Share this post

開發者週報 #1

www.ethanhuang13.com
Comments
TopNewCommunity

No posts

Ready for more?

© 2023 ethanhuang13
Privacy ∙ Terms ∙ Collection notice
Start WritingGet the app
Substack is the home for great writing