以下を読んだ際の備忘録
UIKit&Swiftプログラミング 優れたiPhoneアプリ開発のためのUI実装ガイド Kindle版
https://www.amazon.co.jp/dp/B00ZF44J8K/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
■iOS SDK
xCodeに同梱されている。フレームワークやiOSの実行環境なども含む
■Application Bundle
→アプリの実体。これがメモリの上に乗る
■アプリの状態
・Active(以下の順で遷移した後、Background状態になる)
appplicationWillResignActive(:)
applicationDidEnterBackground(:)
application(:shouldSaveApplicationState:)
application(:didDecodeRestorableStateWithCoder:)
・Background(裏で動いている)
通常5秒、延長して180秒
・Suspended(現在動作はしていないが、再開できるようにメモリ上に残っている)=sleep?
メモリが圧迫されたらKillされる
・Not Running(メモリにいない)
■アプリの構成
・Deviceに関する部分
→iPhoneの、何インチなのかとか
・Application共通部分
→Framework部分。ホームボタンを押した時にホームを表示したり、着信が来た時に着信画面を出したり
・アプリ毎に実装が異なる部分
→デザインパターンに基づいて実装する
■イベントループ(Main Run Loop)
イベントが発生するまで待ち続け、イベントが来た際に1つずつ処理する仕組み
イベントは、ユーザー操作、端末が振られた、Notificationを受信した、着信が来たなど
イベントは、イベントキューに積まれる( Queuing)
その後、渡し先にディスパッチ(割り振り)される
■UIApplicationオブジェクト
イベントループを管理し、適所にディスパッチする。
=アプリの動作全体を管理する。全てのアプリは、UIApplicationのインスタンスを持つ
■フレームワーク
以下を含んだパッケージ(ディレクトリ)
・システムAPI
・ダイナミック共有ライブラリ
・ヘッダファイル
・画像
・補助アプリなど
・その他ライブラリのサポートに必要なリソース
■MVCパターン
・モデル=アプリが扱うデータを保持、操作
・ビュー=モデルが持つデータをユーザに表示することと、UIを提供すること
・コントローラ=両者の橋渡しと、Notificationなど、端末からの通知を受け付ける
■Delegateパターン
プロトコルを継承させ、呼び出し元はプロトコルのメソッドを呼ぶだけ。
プロトコルを実装するクラスに実装を委譲するのが目的
■Observerパターン
NSNotificationCenterで呼び出すこと。
このパターンは、Broadcastのように、複数機能に処理タイミングを通知することが目的
アプリがバックグラウンドになったタイミングをViewControllerで知りたいときはAppDelegateからNSNotificationCenterで呼べばいい
■シングルトンパターン
オブジェクトをたった一つにすることで、処理の漏れを防ぐ
■InterfaceBuilder
デザインのツール。
Storyboardを作るキャンパスを提供
Auto Layout
Size Class
■Storyboard
設計図
場面=画面(View Controller Scene = ViewController + View)
キャラクター=部品
シナリオ=画面遷移(Segue)
ルール1=Viewの大きさや位置(Auto Layout)
ルール2=表示可否、Constraintの利用有無の取り決め(Size Class)
■コンポーネントの役割
コンテンツViewController
通常のViewController
コンテナViewController
ViewControllerを管理するViewController
Scene
StoryBoard上の一画面
■ライフサイクル
アプリが起動
UIApplicationオブジェクトがUIWindowインスタンスを生成する
メインのStoryBoardをインスタンス化
Initial ViewControllerをインスタンス化
UIWindowオブジェクトのrootViewControllerプロパティに設定
Viewの木構造
rootViewControllerのrootViewをロード
rootViewのsuperviewプロパティにWindowオブジェクトが入る
rootViewの子Viewをロードし、subviewsプロパティに入れる
ViewControllerの木構造
ViewControllerも木構造になっている
parentViewController、childVoiewControllersプロパティそれぞれに格納されている
■モーダルビューについて
モーダルビューは、画面いっぱいに表示するか、一回り小さく表示するか指定できる
モーダルビューを閉じるのは、呼び出し元のViewControllerの役目。
でも一時的にモーダルビューに制御が移っているので、Delegateで移譲する