Lecture 2: MVVM and the Swift Type System
Stanford CS 193 p iPhoneアプリケーション開発Spring 2020をYouTubeで聴取し記録した.
Architecture
「コード組織」設計モード は、「応答」ユーザインタフェースとともに を使用する. SWIFTUIとともに を使用する必要があります UIKEで使用するモデルビューコントローラとは異なり、
「The Truth」:異なる場所にデータを格納するか、異なるバージョンがない
Declared:UIで宣言されている関数は、いつでも独立して呼び出すことができます.localize code. UIを表示する他のコードは分散ではなくread-onlyなので予測できる.
コマンド:関数間の依存性(関数が実行され、別の関数が実行される)のため、ユーザーが関数を呼び出してUIを随時変更しようとすると、管理が困難になります.
Reactive:モデルが変更されると、ビューも自動的に変更されます.
Model -> View
View Modelは、Viewがモデルに使用するポータル・チャネルです.
Viewは共有することが多いのでクラスです
View ModelにはViewへのポインタがありません.(ビューは出版物、モデルを直接購読しません)
モデルの変更について理解する(structのコピー、HTTPリクエスト、またはSQLデータベースへのアクセス)
可能性「解釈」:中間的に解釈しても解釈しなくてもよい
publish「something changed」:変化を表す
逆方向?View -> Model
Model View Intent
ユーザーが画面上でカードをクリック
ストレージvar:メモリに格納
computed var
constant let
func
init
structclassvaluetypeReference type(heapに格納されている)コピーされたポインタコピー.自動参照カウント機能を書くためのプログラミングオブジェクト向けプログラミングの継承性なし(単一)「Free」init initializes ALL vars「Free」init initializes no vars Mustability.Always mutable(hipでアクセス可能)Your「go to」を明確に宣言する必要がある特定の環境で使用されるデータ構造ビュープロトコルMVVMモデルでのViewModel、UIKEtの使用
don't careタイプ->タイプパラメータ
例:Arrayのコードエンクロージャを閉じる
inlined function
パラメータ伝達関数用 ビューの作成
37分27秒
次に、モデルの作成を開始します.
https://cs193p.sites.stanford.edu/
Architecture
MVVM: design pattern
Model-View-VewModel
「The Truth」:異なる場所にデータを格納するか、異なるバージョンがない
Declared:UIで宣言されている関数は、いつでも独立して呼び出すことができます.localize code. UIを表示する他のコードは分散ではなくread-onlyなので予測できる.
コマンド:関数間の依存性(関数が実行され、別の関数が実行される)のため、ユーザーが関数を呼び出してUIを随時変更しようとすると、管理が困難になります.
Reactive:モデルが変更されると、ビューも自動的に変更されます.
Model -> View
View Modelは、Viewがモデルに使用するポータル・チャネルです.
Viewは共有することが多いのでクラスです
View ModelにはViewへのポインタがありません.(ビューは出版物、モデルを直接購読しません)
モデルの変更について理解する(structのコピー、HTTPリクエスト、またはSQLデータベースへのアクセス)
可能性「解釈」:中間的に解釈しても解釈しなくてもよい
publish「something changed」:変化を表す
逆方向?View -> Model
Model View Intent
ユーザーが画面上でカードをクリック
Varieties of Types
struct, class, protocol, generics(Don't care), enum, functions
struct, class
ストレージvar:メモリに格納
computed var
constant let
func
init
structclassvaluetypeReference type(heapに格納されている)コピーされたポインタコピー.自動参照カウント機能を書くためのプログラミングオブジェクト向けプログラミングの継承性なし(単一)「Free」init initializes ALL vars「Free」init initializes no vars Mustability.Always mutable(hipでアクセス可能)Your「go to」を明確に宣言する必要がある特定の環境で使用されるデータ構造ビュープロトコルMVVMモデルでのViewModel、UIKEtの使用
Generics
don't careタイプ->タイプパラメータ
例:Arrayのコード
strct Array<Element> {
...
func append(_ element: Element) {...}
}
var a = Array<Int>()
a.append(5)
a.append(22)
// 누군가 Array를 '사용'할 때, Element의 타입이 Int로 정해짐
Functions as Types
(Int, Int) -> Bool // takes two Ints and returns a Bool
var foo: (Double) -> Void // foo's type: function that takes a Double, returns nothing
func doSomething(what: () -> Bool) // what's type: function, takes nothing, returns Bool
var operation: (Double) -> Double // function that takes a Double and returns a Double
func squre(operand: Double) -> Double {
return operand * operand
}
operation = squre
let result1 = operation(4) // 16
operation = sqrt // 내장함수
let result2 = operation(4) // 2
inlined function
パラメータ伝達関数用
37分27秒
次に、モデルの作成を開始します.
https://cs193p.sites.stanford.edu/
Reference
この問題について(Lecture 2: MVVM and the Swift Type System), 我々は、より多くの情報をここで見つけました https://velog.io/@msi753/Lecture-2-MVVM-and-the-Swift-Type-Systemテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol