# 5/11 (Wed) :::warning - iOS: MVC -> MVVM - web: HTML+CSS -> Redux 資料流概念 -> MVVM+Redux (playcraft 之前的架構) -> pure MVVM (playcraft 現在的架構) - (iOS + Android) app Launch 進入點(app 開啟之後做了哪些事) - 各平台的 layout system for each platform - error handling (Kotlin + JS) - @Ralf & @Isaac 教學 `*` `&` (C++) - @Ralf 說要研究 js 的 null & undefined & ?? - 版號使用 ::: ## 本日 topics - useRef() - 亂鬥是否改為雙週一次? - iOS app Launch 進入點(app 開啟之後做了哪些事) - iOS 專案從哪邊可以看到用了哪些 library? ## useRef() - [useRef document](https://zh-hant.reactjs.org/docs/hooks-reference.html#useref) - react 不希望 developer 直接操作 DOM 元素,但 useRef 是讓你可以直接操作 DOM - video 元件本身 impreactive 不是 declarative 所以我們用 useRef() - useRef 常用的方式是來實作 usePrevious - 我們總是可以直接操作 video element - playcraft 用來抓 video element ## iOS app Launch 進入點 - 跟C語言一樣,入口點都是一個main(),裡面會建立application的實例 - 但 Apple 幫開發者包好好了,現在建立新專案會隱藏很多準備事情 - application啟動後,可以從apple提供的`AppDelegate`,讓開發者知道啟動完了。 - build 出來的可執行檔,.ipa for iPhone/iPad, .app for mac - iOS 的世界,一頁畫面通常就是一個 UIViewController - 會有特別的 UIViewController 來做不同頁面的階層管理,UINavigationViewController & UITabViewController - 而一頁一頁的頁面會被裝載在 UIWindow 內,可以想像就是視窗程式的視窗 - NavigationControl會幫忙換不同的ViewControl,通常會在window裡面塞這個。 - QML 跟 SwiftUI 好像(?) by Ralf ```objectivec= #import "AppDelegate.h" int main(int argc, char *argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); } } ```