13 報

Share this post

開發者週報 #100 is 101

www.ethanhuang13.com

開發者週報 #100 is 101

Apple/iOS 開發者的一週大小事 2021/07/12-2021/07/18

13
Jul 18, 2021
1
Share this post

開發者週報 #100 is 101

www.ethanhuang13.com

13的話

這期是下個一百期的開始。很巧的是,我跟 Pofat 錄製的 podcast 也前進到第六季。

絕大多數的 iOS 開發者還沒有機會好好來用 SwiftUI,但這又是我最近比較有心得的東西,所以還是跟大家聊一下這塊。

排版方式是我很喜歡 SwiftUI 的一點。寫成下面這樣,再加上確定 Preview 100% 運作(需要開發團隊共識),就會很好維護。

Twitter avatar for @ethanhuang13
13 @ethanhuang13
我都會要求同事把 SwiftUI body 寫成這樣,能一眼看出畫面結構 struct PersonView: View { @state var person: Person var body: some View { VStack { photo name ... } } private var photo: some View { ... } private var name: some View { ... } ... }
1:26 AM ∙ Jul 15, 2021
51Likes9Retweets

還有一個小技巧。如果你想要把某個 Text 填滿畫面,可是 Text 是依照文字內容來決定大小。我會寫 Color.clear.overlay(Text("...")),因為 SwiftUI 的 Color 是預設往外填滿,而 .overlay 的尺寸是根據它加在什麼上面而定(.background 也是)。

你甚至可以在 overlay 設定 alignment。很適合在一張圖片上某個角落放個標籤那類的需求。

最後說一個可能會顛覆你認知的東西。如果 app 有很多畫面需要疊加顯示(像 modal view 那樣),在 SwiftUI 裡我目前的作法不是用 present,而是把這些 views 都放在一個 ZStack,然後需要顯示時去改變它們的 opacity 與 offset 就好了。

好啦,這期的 SwiftUI 小教室就先到這裡。

(看前一期 · 回首頁)


🧪 iOS 15 Beta 3

這版其實是 WWDC 之後第一次打包的版本,所以才開始有 feedback 帶來的變化。

Twitter avatar for @9to5mac
9to5Mac.com @9to5mac
9to5mac.com/2021/07/14/ios… #watercooler #iOS
Image
3:43 AM ∙ Jul 15, 2021
699Likes48Retweets
  • Xcode 13 Beta 3 如果你在第一時間就下載,請注意後來又推出了 13A5192j 這個 build。有些 SwiftUI API 回頭支援到 iOS 13,詳見最下面 weak self。

  • iOS 15 Beta 3 改最多的應該是 Safari

  • watchOS 8 Beta 3

  • tvOS 15 Beta 3

  • macOS Monterey Beta 3

🧪iOS 14.7 RC

  • iOS 14.7 RC

  • watchOS 7.6 RC

  • tvOS 14.7 RC

  • macOS Bug Sur 11.5 RC

🎒Apple 開學季專案(Back to School)

符合資格的話可以取得一台 AirPods。

📣確認 UIViewController 有被釋放的小技巧

這個技巧幾年前就看過了,簡單來說是在 dealloc 的時候播放提示聲。

Twitter avatar for @sarunw
Sarun W. @sarunw
No more print in deinit to detect a retain cycle. Useful Xcode breakpoint that plays a sound when view controllers are properly deallocated. sarunw.com/posts/easy-way… #iosdev
Image
12:56 AM ∙ Jul 18, 2021
30Likes5Retweets

@_sip_

Swift 中的 SPI 是 System Programming Interfaces 的意思。雖然不是正式的功能,但可以在內部 frameworks 之間開出一些 API,而外部看不到(有點類似 @testable),頗實用的啊。原本的 PR 在此。

Twitter avatar for @_inside
Guilherme Rambo @_inside
Swift tip (contains an underscore, so proceed with caution): ever wanted to expose things from a given internal framework to another internal framework without exposing them to other targets? You can do that since Xcode 12 with @_spi
// In MyAppCore.framework
@_spi(MyInternalSPI)
public final class MyInternalSPIThing {

    public func doSomethingThatShouldNotBeExposedToExternalClients() {
        // ...
    }
    
}

// In MyAppUI.framework
@_spi(MyInternalSPI)
import MyAppCore

// You may now call MyInternalSPIThing.doSomethingThatShouldNotBeExposedToExternalClients
5:49 PM ∙ Jul 16, 2021
150Likes25Retweets
Twitter avatar for @dgregor79
Doug Gregor @dgregor79
@steipete @_spi Yes, @_spi is available in Xcode 12 / Swift 5.3. It’s experimental still, but we’re mostly happy with the way the feature turned out. I would love to see it replace @testable. I really, really, really dislike @testable.
2:59 PM ∙ Jun 24, 2020
24Likes5Retweets

🤪Random Tweets

真的要趕快去試一下 Private Relay,就算 iOS app 沒問題,搞不好網站會受到影響。

Twitter avatar for @ethanhuang13
13 @ethanhuang13
這些年 Apple 加強使用者隱私帶給開發者的傷害 iOS 13 Sign In with Apple iOS 14 ATT iOS 15 Privacy Relay(還沒有試這個的開發者快去試。不要說我沒提醒你) #太傷害了 #以下開放受害者留言
6:26 AM ∙ Jul 13, 2021
34Likes1Retweet
Twitter avatar for @joe_trash_talk
{{an idiot sandwich}} @joe_trash_talk
「我給很多社群演講,很努力在對公司產生貢獻,你要學著點,自己找方案貢獻。」 到底是嗑了什麼才能對社群的創辦人說這句話 🤣🤣🤣🤣🤣 #路邊聽到的鬼故事
5:51 AM ∙ Jul 13, 2021
Twitter avatar for @OptometristDan
Stan Denshaw burner💫 @OptometristDan
Me at work
Image
7:02 PM ∙ Jul 13, 2021
79,920Likes8,867Retweets
Twitter avatar for @tatunami
達波鷹仁 @tatunami
念願のiPad ProとApple Pencil✨ 刻印サービスで絶対に忘れてはいけない事を刻み込みました。
Image
3:06 AM ∙ Jul 15, 2021
59,721Likes18,519Retweets
Twitter avatar for @retsohuang
Retso Huang @retsohuang
疫情前我們稱上班族為「社畜」,現在大部分社畜已經在家工作將近兩個月,是時候改正名一下了 改叫「家禽」 🐔🐔🐔
8:00 AM ∙ Jul 15, 2021
62Likes7Retweets
Twitter avatar for @polchen_
Pol @polchen_
四喜丸子 #AirTag
Image
6:59 AM ∙ Jul 16, 2021
Twitter avatar for @steipete
Peter Steinberger @steipete
Apple’s crash log symbolicator giving up hard ¯\_(ツ)_/¯
Image
1:39 PM ∙ Jul 16, 2021
108Likes2Retweets

這串值得一讀。

Twitter avatar for @xuwenhao
Steam & Magic @xuwenhao
过去5年最大的一个判断错误是,没有意识到绝大部分软件开发已经变成了一个劳动密集型工作。 这个认知在过去2年才慢慢掰回来,但是基于这个判断做的各种决策带来对自己经济上的负面影响还没有完。
3:53 AM ∙ Jul 17, 2021
297Likes69Retweets

🎙weak self podcast 79: 為什麼有些 API 可以 backport 

第六季正式開始

所謂 backport 的範例

Twitter avatar for @zntfdr
Federico Zanetello @zntfdr
Next, view builders backport! Most of the new view builders API (highlighted here fivestars.blog/articles/swift…) have been backported all the way to iOS 13!
For example, we went from:
@available(iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0, *) // 👈🏻
extension Section where Parent : View, Content : View, Footer : View {
  public init(
    @ViewBuilder content: () -> Content, 
    @ViewBuilder header: () -> Parent, 
    @ViewBuilder footer: () -> Footer
  )
}
To:
@available(iOS 13.0, macOS 10.15, tvOS 13.0, watchOS 6.0, *) // 👈🏻
extension Section where Parent : View, Content : View, Footer : View {
  public init(
    @ViewBuilder content: () -> Content, 
    @ViewBuilder header: () -> Parent, 
    @ViewBuilder footer: () -> Footer
  )
}
7:14 AM ∙ Jul 15, 2021
64Likes10Retweets

💼職缺/履歷交流區

求才職缺:

  • CATCHPLAY+ Senior iOS Developer

如果你有 iOS 相關職缺或是求職履歷想要刊登在開發者週報,請見關於。

Share this post

開發者週報 #100 is 101

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