Marcus’ Blog

馬克斯的碎念與筆記

Author: Marcus Wu (page 1 of 10)

使用Xcode Configuration 與Scheme來分Production 與Internal release 環境 (續)

此篇文章完整範例呈現於GitHub,若有需要參考可直接clone 並切換到每個階段,有任何問題也歡迎直接在底下留言或在GitHub 開issue。


如果因應需求,需要讓兩個app 是可以同時安裝的話,這樣的設定是不夠的,但我們需要改的東西不多,讓我們延續上例繼續改進。

首先我們可以先到Project 當中,打開app target 的Info.list 看一看,我們可以看到Bundle identifier 已經是透過參數帶入。

螢幕快照 2019-03-14 下午2.58.20

Continue reading

使用Xcode Configuration 與Scheme來分Production 與Internal release 環境

此篇文章完整範例呈現於GitHub,若有需要參考可直接clone 並切換到每個階段,有任何問題也歡迎直接在底下留言或在GitHub 開issue。


問題

在專案當中,有時候我們會透過類似以下的用法來判定是否為某一個開發環境:

struct Config {

    static let isProduction = false

    static let apiURL = isProduction ? "www.production.server.com" : "www.test.server.com"

}

如果我們需要release 不同環境的app 時,我們必須要手動去更改isProduction 的值,有時候一個不小心Build 了十幾分鐘發現自己忘了改、改錯了、不小心把設定Commit 了… 等等團隊開發中容易誤導的問題,都相當的困擾,因此應該用良好的方法來避免這樣的問題發生。

Continue reading

優雅的使用Swift 與Storyboard

最近剛到新公司,這裡的專案大量的使用Storyboard,在前公司時,因為多人協作的關係,並沒有使用Storyboard 在進行開發,因此,結合了一些已閱讀過的觀念,順便來實作看看。

原本的問題

原本使用Storyboard 要拿到一個viewController 的instance 時,需要像這樣:

func foo() {
    let storyboard = UIStoryboard(name: "MainStoryboard", bundle: nil)
    let initViewController = storyboard.instantiateInitialViewController()
    let viewController = storyboard.instantiateViewController(withIdentifier: "AnIdentifierForViewController") as! ViewController
    // Do something...
}

這邊有幾個缺點:

  • Storyboard 與ViewController 的Identifier 都是字串,重複使用時容易typo,對開發來說造成許多變因,以經驗上來說挺危險的
  • 使用了as! 來做downcast,但不使用強制轉型又顯得哆嗦

Continue reading

What’s New in Swift – Session 401

Swift 4.2

Runtime Optimizations

Swift 透過ARC 來做記憶體管理,在4.1 以前,Compiler 自動幫我們在該retain、release 的地方加上code(跟Objc 相同)

class X { ... }

func caller() {
    // x 被created 之後,+1 reference count
    let x = X()
    foo(x)
}

func foo(x: X) {
    let y = x.value
    ...

    // 用完x之後,release x
}

Continue reading

WWDC18

往年看完WWDC,都沒有特別做些筆記,大多數的議程都是碰到技術相關需要才去讀,今年特地把看過的議程做些筆記,也希望可以加強自己的英聽🤣,不過也由於是筆記形式的紀錄,內容不保證完全正確,甚至有些因為經驗不足可能聽不太懂🙇‍♂️(例如比較進階的Swift generic 用法之類的),未來若有碰到我應該也會再查資料往回填,望請其他大神指教。

以下是目前為止看完的議程,將會持續更新:

Swift

Framework

Older posts

© 2021 Marcus’ Blog

Theme by Anders NorenUp ↑