[Swift] App Lifecycle & ViewController LifeCycle


列挙


Enumはタイプなので、大文字モードを使用して名前を定義し、各モードを小文字モードとして定義します.
各case自体が一意の値です.1行で個別に定義したり、1行で複数を定義したりできます.
switch構文では、列挙値を一致させることができます.すべての場合(cases)、デフォルト値(default)を含める必要があります.
enum CompassPoint {
    case north
    case south
    case east
    case west
}

var directionToHead = CompassPoint.west
directionToHead = .east

directionToHead = .south
switch directionToHead {
case .north:
    print("Lots of planets have a north")
case .south:
    print("Watch out for penguins")
case .east:
    print("Where the sun rises")
case .west:
    print("Where the skies are blue")
}
// Prints "Watch out for penguins"


enum Planet {
    case mercury, venus, earth, mars, jupiter, saturn, uranus, neptune
}

let somePlanet = Planet.earth
switch somePlanet {
case .earth:
    print("Mostly harmless")
default:
    print("Not a safe place for humans")
}
ランダム入力値を防止することで,入力値エラーの可能性を低減し,コードの信頼性を向上させる.
文字列や整数など、入力する情報を入力するのではなく、選択できます.
列挙は、関連するデータのメンバーからなるデータ・オブジェクトです.

データ型との違い


配列、コレクション、バイナリなどの要素を削除または変更できます.ただし、列挙メンバーのenum定義を変更しない限り、列挙メンバーは削除または変更できません.
「開く」(Open)シェイプのメンバーは、定義時にコンパイラによって事前に知られることができます.したがって、エラーやエラーが発生した場合は、コンパイル時にエラーを認識できます.これにより、エラーの修復がより容易になります.集団データの場合は、実行時に検証できます.

必要性


入力する値を指定して、不要な値が無効にならないようにします.
制限された値からのみ選択できるように、ルールを事前に決定します.

元の値(RawValue)


値を
  • メンバーから分離
    数字や文字列などの情報を伝える必要がある場合は、データだけで伝える意味は限られています.EnumのCase自体は独立した値ですが、内部に別の値を格納できます.
  • enum AppleDevice: String {
        case iPhone = "아이폰"
        case iPad = "아이패드"
        case watch = "애플워치"
        case mac = "맥킨토시"
        case airPods = "에어팟"
    }
    一部のプロジェクトにのみ値を指定できます.この場合、値はcaseNameと同じになります.
    整数タイプの場合、割り当てられた最初のアイテムに基づいて+1ずつ増加します.

    Alert


    アプリケーションを使用する場合は、開発の観点から이벤트にUIを構成し、사용자で確認する必要があります.すべてのアラートはAlert Controlで開始します.目覚まし時計はタイトル、メッセージ、および各動作をとります.
    @IBAction func showAlert(_ sender: UIButton) {
        // 1. UIAlertController 생성: 밑바탕 + 타이틀 + 본문
        let alert = UIAlertController(title: nil, message: nil, preferredStyle: .alert)
            
        // 2. UIAlertAction 생성: 버튼들..
        let ok = UIAlertAction(title: "아이폰이 왔다!", style: .default)
        let ok2 = UIAlertAction(title: "아이폰 Max가 왔다!", style: .default)
        let ipad = UIAlertAction(title: "아이패드가 왔다!", style: .destructive)
        let watch = UIAlertAction(title: "애플와치가 왔다!", style: .cancel)
            
        // 3. 1+2
        alert.addAction(ok2)
        alert.addAction(ok)
        alert.addAction(ipad)
        alert.addAction(watch)
            
        // 4. Present
        present(alert, animated: true, completion: nil)
    }
  • Alert ControlのPreferred Style
    システムが提供するフローティングフォーマットを設定できます.基本的なポップアップアラームalertと下から上への形式.actionSheetがあります.スタイルの変更には多くの制限があるため、ライブラリを直接カスタマイズしたり利用したりすることができます.
  • UI AlertActionのスタイル
    基本形式の.default、太字でハイライト表示します.cancelが赤くなる破壊性がある.
  • このほか、ユーザーインタフェースを使用して알람に次の内容を確認します.
  • UI ImagePicker Controller(アルバム写真選択)
  • UI Activity ViewControl(ファイル共有用パネル)
  • UI Menu Control(特定のテキスト/画像などの要素ブロックのコピー、貼り付け)
  • アクションメニュー
  • UIDocumentPickerViewController(アプライアンス内蔵ファイルを使用)
  • UI FontPicker ViewControl(フォント設定)
  • UI ColorPicker ViewController(オプションカラー)
  • Storyboard Reference


    シーケンス画像ボードで作業する場合、ユーザインタフェースはコード作成よりも判断と可視化が容易であるが、ビューコントローラの増加に伴い、シーケンス画像ボードのロード時間が長くなり、アプリケーションのScene構造を理解することも複雑になる.また、コラボレーション時にStoryboardの所有者が競合する可能性があります.
    したがって、シーケンスイメージボードを使用せずに100%のコードのみを使用するか、シーケンスイメージボードにビューコントローラを配置してシーケンスイメージボード自体を分割することができます.シーケンスイメージボードを使用する場合は、シーケンスイメージボードを使用して参照してください.
    マルチシーケンスイメージボード
    新しいシーケンスイメージボードファイル
  • を追加します.
  • シーケンスイメージボードに表示するSceneを設定し、シーケンスイメージボードにエントリポイントを設定します.
  • 既存のシーケンスイメージボードからシーケンスイメージボード参照要素を作成し、画面切り替えを可能にする関係を作成します.
  • プロジェクトの完全な設定により、実際のアプリケーションの起動時に最初に実行すべきシーケンスイメージボードを設定します.
  • info.plistで、アプリケーションScene Manifestを変更します.
  • Swift Package Manager


    依存管理ツール.パッケージの検索と管理に使用します.アップルの公式サポート.XCode 11からはGUI環境の改善に伴いサポート環境がより安定しており、ファイルにパッケージを追加したりアドレスを追加したりすることで、簡単にパッケージを導入することができます.
    Web開発においてNode Package Managerと同様の機能を持つツールであり、その他の依存管理ツールにはCocoapotとCartaが含まれる.
    Cocoapotは依存性を追跡して自動的に管理できるので使いやすいが,構築速度が重く遅いという欠点がある.テープ・ライブラリは軽量ですが、サポート・ライブラリによっては比較的少ない制限があります.

    Dependency Rule



    サポートされている機能は、ライブラリのバージョンによって異なり、開発環境によっては(iOSのバージョン)適用されない場合があります.したがって、バージョンを使用する場合は、対応するgit-hub式の説明で注意し、使用する必要があります.バージョンルールの範囲で管理することもできます.
    0.3.2
  • 0:Major-既存バージョンと互換性がありません.APIが変更された場合は
  • です.
  • 3:Minor-既存バージョンと互換性があり、新機能
  • 2:Patch-既存のバージョンでエラーを修正する
  • ライブラリ/フレーム



    共通点:機能を利用できるクラスとコンポーネントから構成されています.
  • ライブラリ:必要な機能を含むコードのセット.クラスと機能を含み、必要に応じていつでもこれらの機能を呼び出して効率的なコードを作成できます.より簡単なツールのセットです.
    主導性は開発者にあり、開発者が必要に応じてコードを使用し、直接制御してカスタマイズすることができます.
  • フレームワーク:スケルトンまたはインフラストラクチャを指し、사용자の概念を採用した代表的な技術である.特定の概念抽象を提供するクラス、Componentなどからなる.
    主導的な地位はフレームワークの面にあるため、任務はフレームワークに従って行われる.
  • 現在、リポジトリとフレームワークの境界があいまいなため、よく混用されています.
    フレームとライブラリの違い

    UserDefaults


    通常、プログラムを実行してプロセスをメモリスタックに配置すると、内部ドライバコードの動作はメモリにのみ保持されます.したがって、画面切り替え時にメモリからコードを削除すると、そのコードは不正に収集され、消えてしまいます.
    ただし、UserDefaultsは제어의 역전をサポートしています.Appleが提供するキー・バリュー・プライマリ・リポジトリは、Web開発におけるWebストレージ・オブジェクトlocalStorageに似ています.アプリケーションにデータを半永久的に格納することで、アプリケーションが閉じたり開いたりしてもデータを保持できます.
    内部保護された영속적인 데이터 활용によって各アプリケーションのplistファイルが作成され、データが管理されます.これは、すべてのデータがユーザーの欠陥によって格納されることを意味するのではなく、簡単な設定値、環境値、および非常に少ない単一のデータ値を格納します.
    ex.自動ログインするかどうか、通知を受信するかどうか、アプリケーションを支払うかどうか、電子メール、ニックネームなどのユーザープリファレンス、アプリケーションテーマ、ポップアップするかどうかなど
    データが永続的で、アプリケーションが永続的である場合は、削除するかどうかにかかわらず、データを保持する場合は、バックアップ/リカバリ、Keychain、iCloud同期をサポートすることで補足できます.
    管理はJSONタイプのデータ構造と同様で、EncoderとDecoderで変換・利用する必要があります.
    🔗 コラボレーション識別