Amarronの日記

iOSやMac、Web系の記事を書きます。

Xcode デバッグ 値変更

概要

  • Xcodeでデバック中に、変数の値や関数の実行する方法の説明です
  • デバックエリアでLLDBコマンドを実行して確認します
  • 値の変更はデバックエリアで「po 変数名 = 値」で変更できます

LLDBとは、Mac OS X上のXcodeでデフォルトのデバッガで、デスクトップとiOSデバイスとシミュレータ上のC、のObjective-CC++Swiftデバッグをサポートしています。

f:id:Amarron:20150314202752p:plain

実行方法

  1. デバックエリアを表示(メニューバー->View->Debug Area->Show Debug Area)
  2. 止めたいところにブレークポイント設定
  3. プログラムの実行
  4. デバックエリアでLLDBコマンドの実行

実行例

  • 変数の値や関数の実行する場合は、「(lldb) po 変数名 または 関数名」を実行します

f:id:Amarron:20150314202812p:plain 「po self.dynamicType」でプロジェクト名とクラス名を表示している例

LLDBコマンド一覧(一部抜粋)

省略形 内容 正式名
po 式の評価(poはオブジェクト、pは基本型も可) expression -o --
h ヘルプの表示 help
s ステップイン thread step-in
c 続きを実行(次のbreakPointまで) process continue
br l breakPointを一覧表示 breakpoint list
bt 現スレッドのバックトレース情報を表示 thread backtrace

iOS 保存領域 比較 〜NSUserDefaults, CoreData,Keychain,等〜

アプリ容量の制限について


アプリのストレージの最大容量は、おそらく制限なし(20M以上だとDL時にwifiが必要となる)

f:id:Amarron:20150314205528j:plain

保存領域について


種類 説明
アプリ領域 アプリが自由に使え、他のアプリから参照できない領域
OS領域 OSが使用するデータが保存されており、基本的にアプリから参照できない領域
共有領域 メディアライブラリ(写真、音楽等)やイベント(カレンダー等)、連絡先は全てのアプリから参照することができる領域(アプリからできる内容は、書き込みと閲覧のみ)

永続データの復元(比較)について


  • 復元時にデータも復元するには、外部サーバーにデータを保存するかiCloudを利用しないと殆ど初期化される
  • 保存領域が共有領域であれば、アプリ自体にiCloudの処理をいれなくても、共有領域のデータは復元できそう
種類 復元可否 備考
アーカイブ オブジェクトをバイナリ形式に変換してからファイルに永続化(一番基礎的な技術)
プロパティリスト - ユーザーが変更しないもの(定数)、plist
NSUserDefaults ユーザーが変更するもの
CoreData データ量多い
Keychain パスワードや個人情報(暗号化されていない場合復元されない)

アプリ内にDBとして保存したい場合realmがオススメです。(日本語のドキュメントもしっかりしていて、組み込みも簡単で、ブラウザも用意されています)

参考URL