コード追跡に役立つ Xcode の機能

  • 128
    Like
  • 4
    Comment

ファイルを探す

名前を入力して開く

  • File > Open Quickly...

ファイル名(クラス名)だけでなく、メソッド名や変数名でも検索できる。

入力後Option+Enterキーでファイルを開くと、Assistant Editor側にファイルを開いてくれます。
(Standard Editorの状態でも、Assistant Editorのモードに切り替えた上で開いてくれる!)

クラス名の一覧から開く

  • View > Navigators > Show Symbol Navigator

エディタの機能

なるべくショートカットを覚えて活用したい。
自分はデフォルトのキーアサインが気に入らなかったので、Control + 何か にカスタマイズしている。

クラスやメソッドの定義にジャンプ

  • クラス名やメソッド名にカーソルを合わせる。
  • Navigate > Jump to Definition

ジャンプ前のソースに戻る・進む

  • Navigate > Go Back / Forward

次・前のエラーにジャンプ

  • Navigate > Jump to Next/Previous Issue

ヘッダ(.h)と実装ファイル(.m)を切り替える

  • Navigate > Jump to Next/Previous Counterpart

メソッドの呼び出し元を表示する

  • メソッドにカーソルを合わせ、右クリック
  • コンテキストメニューから Find Call Hierarchy を選択

画面右の Find navigator に、呼び出し元のツリーが表示される

その他の方法

  • メソッドにカーソルを合わせる。
  • View > Standard Editor > Show Related Items
  • 表示されるメニューから Callers > (呼び出し元メソッド) を選択。

または Assistant editor を開き、表示するコードを "Callers" に変更。
あとは左のエディタでメソッドにカーソルを合わせることで、自動的に呼び出し元のコードが表示される。
(呼び出し元が複数ある場合は最初を表示)

検索あれこれ

  • Find > Find... (Command+F)
  • 検索キーワードを入力
    • Find Next: 次にマッチする場所へジャンプ (Enter または Command+G)
    • Find Previous: 前にマッチする場所へジャンプ (Shift+Enter または Command+Shift+G)
    • 検索を終了 (Esc)

Find Next(Command+G)、Find Previous(Command+Shift+G)は検索モードでなくても、最後に入力した検索キーワードで再検索を行ってくれる。

Assistant Editor / Primary Editorで開く

  • Navigate > Open in Assistant/Primary Editor

Primary Editorで開いているファイルをAssistant Editor側に置いて別のファイルを開きたいときや、その逆を行いたいときに便利。

Source Editor上部にあるメニューを開く

  • View > Standard Editor > Show Document Items (Control+6)

xcode_20160701.png

この状態で文字をタイプすると、候補の絞り込みが行える。

xcode_20160701_2.png

上下キーで候補を選択し、Enterキーで確定すれば、その位置にジャンプする。

選択中のテキストと同じ部分をまとめて変更する

対象部分を選択した状態で、

xcode_20160701_3.png

  • Editor > Edit All in Scope (Command+Control+E)

そのままタイプすれば、同じテキストがまとめて変更できる。

xcode_20160701_4.png

ドキュメントテンプレートを挿入する (Xcode8)

従来VVDocumenter等のプラグインで実現していたドキュメントテンプレートの挿入機能は、Xcode8より以下のコマンドでできるように。

  • Editor > Structure > Add Documentation (Command+Option+/)

デバッガ

例外ブレイクポイント

デバッグ実行中に例外が発生したとき、発生した場所でプログラムが停止する。

  • Breakpoint Navigator を開く。
  • 左下にある+ボタンをクリックして Add Exception Breakpoint

発生した例外の内容を知りたい場合はデバッグコンソールで以下のいずれかを入力する。

  • po $r0 (arm : iPhone/iPad 実機)
  • po $rax (x86_64 : OSX, iOS シミュレータ)
  • po $eax (i386 : OSX, iOS シミュレータ)

上記のコマンドをブレイクポイントのアクションに入れておけば、停止時に自動で出力される。

excbreak-log.png

[参考] http://stackoverflow.com/questions/15155495/how-do-i-get-exception-details-in-xcode-4-6

コマンドライン

バイナリに含まれているアーキテクチャを調べる

ビルドしたアプリケーションやサードパーティ製ライブラリに含まれているアーキテクチャを調べる場合は、以下のコマンドで。

$ xcrun lipo -info (バイナリファイルのパス)