闡述
現有項目體量有點龐大,每次Run都可以邊瀏覽新聞邊享受一杯濃濃的Coffee。
想過分主體開發,但現有的模式改動成本有點大,版本迭代週期短,先尋求額外的插件來稍微彌補一下即可。
在瀏覽戴銘大師的專欄時,看到一個方案,實踐並記錄一下。
實驗
1 環境
macOS Mojave 10.14.5 + Xcode 10.2
2 移植
2-1 安裝 InjectionIII
App Store 中搜索並安裝(整個過程中最簡單的一步)
2-2 項目配置
a. Workspace配置(項目非集成Pods可以跳過)
將 File -> Workspace Settings... -> Build System,改爲Legacy Build System 模式。
(默認的 New Build System(Default) 模式,是不會編譯 pod 裏面的改動)
b. AppDelegate.swift 注入配置 (applicationDidFinishLaunching函數中)
根據項目開發環境選擇不同的配置代碼:
( 配置語句來自: https://github.com/johnno1962/InjectionIII )
c. UIViewController 預配
在 UIViewController 加入 InjectionIII 後面刷新要調用的函數。 (父類添加,類拓展都OK)
// Swift:
extension UIViewController {
@objc func injected() {
viewDidLoad()
viewWillAppear(true)
viewDidAppear(true)
}
}
// OC:
- (void)injected {
[self viewDidLoad];
[self viewWillAppear:YES];
[self viewWillDisappear:YES];
}
d. 先啓動 InjectionIII,然後Run程序
(當出現下方的小針管並帶有 Injection connected 代表鏈接成功)
3 遺憾點
a. .story + .xib 不支持動態修改
b. 不支持在已有類中動態添加函數
c. 不支持真機
d. 不支持移除代碼並對已添加的視圖進行顯示、隱藏屬性、移除等操作
資料
1. https://github.com/johnno1962/InjectionIII#injectioniii---overdue-swift4-rewrite-of-injection
2. 戴銘極客時間專欄