SlideShare a Scribd company logo
UIViewControllerの
ライフサイクル
13年7月20日土曜日
@gorou_178
Java屋だけどiPhoneアプリに興味
があり自作中。Web系の勉強会などに参加
13年7月20日土曜日
もくじ
• viewDidLoadが呼ばれない?
• ビューのライフサイクル
• 注意すべきイベント
• まとめ
13年7月20日土曜日
viewDidLoadが呼ばれない?
• tableViewのcellをタップ
• pushセグエで次画面表示
• prepareForSegueで次画面にデータを渡
す
→ 正しく動作しない
13年7月20日土曜日
viewDidLoadが呼ばれない?
• デバッグで調査
• prepareForSegueの後にviewDidLoadが呼ばれ
ていた
• 次画面のプロパティがnilだった
• viewDidLoadでプロパティの設定を行なって
いた
13年7月20日土曜日
viewDidLoadが呼ばれない?
• 原因
• viewDidLoadで初期化を行なっていた
• viewDidLoadはprepareForSegueより後
に動作する
13年7月20日土曜日
ビューのライフサイクル1
画面A 説明
initWithCorder
NSCodingプロトコルメソッド
データのシリアル/デシリアル化が行われる
awakeFromNib
コントローラのIBOutletの初期化完了後に実
行される
loadView
StoryBoardの画面デザインをロードするタイ
ミングで実行される※間違っているかも
viewDidLoad ビューの読み込み完了後に実行される
viewWillAppear
ビューのアニメーション開始前に実行され
る
viewDidAppear
ビューのアニメーション終了後に実行され
る
実
行
順
序
13年7月20日土曜日
ビューのライフサイクル2
画面A 画面B
タッチイベント
initWithCorder
awakeFromNib
prepareForSegue
loadView
viewDidLoad
viewWillAppear
viewWillDisappear
viewDidDisappear
viewDidAppear
実
行
順
序
13年7月20日土曜日
注意すべきイベント
• awakeFromNib
• loadViewの前に呼ばれる
• 画面デザイン以外の初期化処理を行
う
• nibファイルの読み込み時に複数回呼
ばれることがある(不確かです)
13年7月20日土曜日
注意すべきイベント
• loadView
• Storyboardのロード時に実行される
• Storyboardを使わない場合、UIの生成
はここで行う
• 基本一度しか呼ばれない(不確かです)
13年7月20日土曜日
注意すべきイベント
• viewDidLoad
• ビューの読み込み完了後に実行され
る
• メモリ警告時、ビューが破棄され再
度実行されることがある(iOS5以前?)
13年7月20日土曜日
注意すべきイベント
• prepareForSegue
• セグエでの画面遷移前に実行される
• 遷移先のビューのloadViewより先に実
行される
• 遷移先ビューにデータを渡す場合、
実行順序に気をつける
13年7月20日土曜日
注意すべきイベント
• viewDidUnload, viewWillUnload
• iOS6から非推奨になった
• メモリ警告時に実行されなくなった
13年7月20日土曜日
まとめ
• viewDidLoadは複数回呼ばれる可能性あ
り
• prepareForSegueは遷移先のloadViewより
先に実行される
• ライフサイクルはしっかり把握した方
が良い(自戒も込めて)
13年7月20日土曜日
課題
• 画面間でのライフサイクル
• アプリケーションライフサイクルとの
関連
• iOSバージョンでの差異を調査
13年7月20日土曜日
参考
• A Day In The Life
http://d.hatena.ne.jp/glass-_-onion/
20120405/1333611664
• Stackoverflowの図
http://stackoverflow.com/questions/5562938/
looking-to-understand-the-ios-uiviewcontroller-
lifecycle
13年7月20日土曜日
ありがとうございました
13年7月20日土曜日

More Related Content

PDF
コンテンツで改善する UI デザインの極意
PDF
Linked Open Data (LOD)の基礎講座
PPTX
見よう見まねでやってみる2D流体シミュレーション
PPTX
未来のプログラミング技術をUnityで -UniRx-
PDF
最高のScrumキメた後にスケールさせようとして混乱した話
PDF
Immersal を活用した AR クラウドなシステム開発とハンズオン!
PDF
UnityとROSの連携について
PPTX
FINAL FANTASY Record Keeperのマスターデータを支える技術
コンテンツで改善する UI デザインの極意
Linked Open Data (LOD)の基礎講座
見よう見まねでやってみる2D流体シミュレーション
未来のプログラミング技術をUnityで -UniRx-
最高のScrumキメた後にスケールさせようとして混乱した話
Immersal を活用した AR クラウドなシステム開発とハンズオン!
UnityとROSの連携について
FINAL FANTASY Record Keeperのマスターデータを支える技術

What's hot (20)

PPTX
What is Angular?
PPTX
20160526 依存関係逆転の原則
PDF
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
PDF
Spring Framework - Expression Language
PPTX
エスノグラフィーの実施手順
PDF
IOS/Androidアプリの3つの大事な設計方針
PDF
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
PDF
QGISセミナー・中級編 Ver. 2.4版
PDF
UXデザインワークショップ資料 by ATOMOS DESIGN
PDF
楽しいShaderToy
PDF
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
PDF
Flutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成する
PPTX
unity 軌跡
PDF
データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介
PDF
Java EE から Quarkus による開発への移行について
PPTX
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
PDF
Windowsフォームで大丈夫か?一番良いのを頼む。
PPTX
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
PDF
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
PDF
Flutter tutorial for Beginner Step by Step
What is Angular?
20160526 依存関係逆転の原則
メンバーのスキルアップ、どうしてる? − Java 100本ノックで新加入メンバーを鍛えてみた −
Spring Framework - Expression Language
エスノグラフィーの実施手順
IOS/Androidアプリの3つの大事な設計方針
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
QGISセミナー・中級編 Ver. 2.4版
UXデザインワークショップ資料 by ATOMOS DESIGN
楽しいShaderToy
【CEDEC2018】CPUを使い切れ! Entity Component System(通称ECS) が切り開く新しいプログラミング
Flutterでscroll viewとexpandedを併用してsign in sign up画面 などの レイアウトを作成する
unity 軌跡
データ仮想化を活用したデータ分析のフローと分析モデル作成の自動化のご紹介
Java EE から Quarkus による開発への移行について
ノンプログラミングで始めるAR (HoloLens 2 / ARCore / ARKit) 開発 with MRTK
Windowsフォームで大丈夫か?一番良いのを頼む。
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
Unityネイティブプラグインの勧め 〜UnityでiOS, AndroidのAPIを利用する方法〜
Flutter tutorial for Beginner Step by Step
Ad

UIViewControllerのライフサイクル