*

Xcode5のナビゲーションエリア[問題ナビゲータ]の使い方

公開日: : 最終更新日:2014/03/22 Objective-C


スポンサードリンク



Xcode5のナビゲーションエリア[プロジェクト、シンボル、検索]の使い方では、アプリ開発に最も不可欠は、プロジェクトとシンボルナビケータと、使いこなすと便利な検索ナビゲータの説明をさせていただきました。

本エントリーでは、「Xcode5でUnitTestを利用してみる。」で編集したプロジェクトを利用して、
「問題ナビゲータ」の説明をさせていただきます。プロジェクトナビゲータの次に、iOS(iPhone、iPad)アプリ開発には不可欠なナビゲータと言えます。
まずは、「Xcode5でUnitTestを利用してみる。」をご覧ください。

Xcode5(iOS7対応バージョンのアプリケーション開発用の統合開発環境)の詳細なバージョンはXcode5(5.0.2)となります。

本エントリーの内容は以下の通りです。

  1. コーディング時の「問題ナビゲータ」の利用方法

 

1 コーディング時の「問題ナビゲータ」の利用方法

まずは、コーディング時の「問題ナビゲータ」の利用方法を記載いたします。

「問題ナビゲータ」に表示される内容

言わずもがなですが、アプリ開発していると、実装中にコンパイルエラーが発生することは良くあります。
コンパイルエラーは必ず対応しなければなりまんせんが、警告は対応が必須ではありせんので、各プロジェクト毎に対応方針が決定されるべきです。
まあ、警告も全て対処を行うことが本来の望ましい姿ですが・・・

コーディング時に「問題ナビゲータ」に表示される内容は、コンパイラが「警告」もしくは「エラー」と判断した情報となります。

警告の例

ヘッダーファイルで宣言したメソッドが実装ファイルで実装されていない時に「問題ナビゲータ」にどのように表示されるか確認してみます。

HelloUnitTestプロジェクトのPerson.hにhogeHogeメソッドを追加しました。

この時点では、Xcodeこの問題を検出していませんので、気付いてもらうためにビルドが必要です。

ビルドを行う操作は、色々ありますが、「Xcode5を軽快に利用するためのショートカット[基本編]」でも取り上げさせていただいた
「Command」ボタン+「B」ボタンでビルドしてみます。

すると、ビルドは成功して、ナビゲーションエリアのナビゲータが「問題ナビゲータ」に切り替わります。
スクリーンショット 2014-03-05 15.12.14

Person.mが問題有りと言われているようです。問題がある時の表現は、警告が黄色三角の中にビックリマーク、エラーが赤丸の中にビックリマークとなります。
とりあえず、Person.mをクリックしてみます。
スクリーンショット 2014-03-05 15.19.54

予想通りエディタエリアにPerson.mが表示されました。
注目していただきたいのは以下の部分です。
スクリーンショット 2014-03-05 15.24.32

あー、おもいっきり切れちゃった。「Method definition for hogeHoge not found」との警告メッセージです。

再度ナビゲータに戻りますが、
Person.mにこんな警告や、エラーがあるよ!、との情報は以下の画像の赤枠の部分に表示され、クリックした時の動作はPerson.mをクリックした時と同じでが、こちらの情報の方がエディタに表示される物より詳細な場合があります。
スクリーンショット 2014-03-05 15.31.05

警告を2つ表示するためにhogeHoge2メソッドをヘッダーに追加してビルドしてみました。
結果は以下のようになりました。予想通りですね。
スクリーンショット 2014-03-05 18.37.18

エラーの例

Person.mを以下の内容にしました。

23行目のイコールの右のが[]で囲まれていないのでコンパイルエラーとなります。
実際のビルド後の画面は以下の様になりました。
スクリーンショット 2014-03-05 19.16.03

Person.mにUnexpected interface name ‘NSString’: expected expressionとのエラーが検出されました。
問題ナビゲータの対応部分をクリックすると、コードエディタ上の問題になっている部分が少し大きくなった後、すぐに元に戻ります。どの行に対応するエラーかは確かにこの動作で認識できますが、初めて見る表現方法ですね。
スクリーンショット 2014-03-05 19.27.03

ちなみにですが、Xcodeはよくエラーのメッセージ等でexpressionって単語を連発します。私は、何からの表現との意味で使っていると思っています。

「問題ナビゲータ」の機能

前節のソースの状態のままで問題ナビゲータ」の機能説明をさせていただきます。

左クリックメニューは前節で説明が終わっておりますので
右クリックメニューの説明をさせていただきます。
HelloUnitTestを選択し、マウスの右クリックをした時の画面イメージは以下の通りです。
スクリーンショット 2014-03-05 19.54.06

存在する選択肢は、以下の通りですが、選択している項目によってクリック可能でない物はグレーアウトされて表示されます。

  • Copy
  • Show in Finder
  • Open with External Editor
  • Open As
  • Reveal in Project Navigator
  • Reveal in Log
  • Issue Navigator Help

Copy

・プロジェクトが選択された場合は、「HelloUnitTest Group」とプロジェクト+Groupがクリップボードにコピーされます。
・ファイルが選択された場合は、ファイルのフルパスがクリップボードにコピーされます。
・エラーと警告が選択された場合は、対象ファイルのフルパス+エラーが起こっている行、列番号+エラーメッセージクリップボードにコピーされます。

Show in Finder

対象ファイルが含まれるパスを開いた状態のFinderが表示されます。

Open with External Editor

.mや.hファイルを他のエディタに関連づけるなどして、そのエディタで開く動きがある事は認識していましたが、指定して開くとの動きは認識して居ませんでした。MacVimとかで開きたいですよね・・・、設定ファイルをいじれば選択しが出てくるようになるんでしょう・・・
何方かこのエントリーをお読みの方で、ご存知の方ご教授ください。

Open As

サブメニューで開くエディタや形式を選択します。
・Source Code
ソースコード用のエディタで開きます。
・Open ASCII Property List
アスキーコードのプロパティ形式のリスト形式で開きます。
Javaで良く利用するPropertyとほぼ同じと考えてください。
・Hex
16進、バイナリーエディタで開きます。
・Preview
参照モードで開きます。

Reveal in Project Navigator

そのままですが、プロジェクトナビゲータで対象のファイルを選択した状態で表示する。
と思っていたのですが、プロジェクトナビゲータに切り替わるだけです。

Reveal in Log

ビルドログで、選択した問題が出力されている部分を表示します。
スクリーンショット 2014-03-06 14.45.13

問題ナビゲータのその他の機能

・問題の表示時のグルーピング指定
「By File」と「By Type」が指定可能です。デフォルトは「By File」となっています。
以下の画像の赤枠の部分をクリックすることで「By Type」に変更可能です。
「By Type」に変更するとそのままですが、型単位で問題をまとめて表示するように変わります。
スクリーンショット 2014-03-06 14.55.06

問題ナビゲータの下部のアイコン

詳細は以下の画像を参照ください。
スクリーンショット 2014-03-06 16.13.42

上記画像では説明できていないのですが、Xcodeが問題を認識するタイミングは2つあります。
1つめは、ビルド実行後。
2つめは、単一ファイルのみで判断できる問題が発生した時。
となります。前者については、追加の解説は不要と思いますが、後者はちょっと分かりにくいと思います。

Person.mの

NSString *dummyStrの行を一旦コメントアウトしてビルドします。
ビルド後の画面は以下の様になりました。
スクリーンショット 2014-03-06 16.25.34

この状態でナビゲータの左下のアイコンを選択状態にします。
するとナビゲータに表示される情報が少し多くなりましたが、殆ど同じです。
スクリーンショット 2014-03-06 16.27.15

この状態で、NSString *dummyStrのコメントを解除し、ファイルをセーブします。
すると、ナビゲータにエラーのマークは表示されましたが、エラーの詳細な情報は表示されていません。
スクリーンショット 2014-03-06 16.32.07

ここでナビゲータの左下のボタンをクリックし、元に戻してみます。
するとエラーの情報が表示されました。
スクリーンショット 2014-03-06 16.35.10

この結果から、Xcodeが問題を認識するタイミングの2つ目を理解していただけたのではないでしょうか。
また、同じ様に問題ナビゲータの左下のアイコンの役割も理解していただけたのではないでしょうか。

Jump Barエリアの右端の左右の矢印アイコン

この矢印アイコンをクリックすることで、各問題を行ったり来たりできます。
スクリーンショット 2014-03-06 16.51.28

ナビゲータで1つ目の警告をクリックします。
するとJump Barの最後の項目がimplementation Personに変わります。
スクリーンショット 2014-03-06 16.53.45

ナビゲータで3つ目のエラーをクリックします。
するとJump Barの最後の項目が+personWithNameに変わります。
スクリーンショット 2014-03-06 16.58.12

このタイミングでJump Barの端の左矢印ボタンを押してみます。
予想どうり、エディタエリアが、ナビゲータで1つ目の警告をクリックしたときの状態に戻りました。
スクリーンショット 2014-03-06 17.00.09


スポンサードリンク

Googleアドセンス

Googleアドセンス




関連記事

iOS(Xcode6とObjective-C)におけるマルチスレッド処理の実装方法その1[NSThreadクラスの簡単な利用例]

「iOS(Xcode6)におけるマルチスレッド処理の実装方法その1」に引き続きiOSに置けるマルチス

記事を読む

Xcode5&Objective-Cでセグエを利用して画面遷移を実現する。[後編:データのやり取り]

では、セグエを利用した画面遷移を実装しました。 後編では、各画面間でデータのやり取りを行えるよ

記事を読む

Objective-Cでコールバック処理を@Selectorで実現する方法

最近はSwiftばっかり読み書きしていますが、既存のライブラリをカスタマイズして使うことも多いので

記事を読む

Xcode&Objective-Cの文字列処理をユニットテスト(XCTestフレームワーク)で確認する。[NSStringの比較]

前回は、NSStringの定義、分割、検索の各処理を確認しました。 二回目は、NSStringの比

記事を読む

Xcode5でイメージ(画像)を表示&操作する[後編]

Xcodeでアプリ開発を行う時に、イメージ(画像)の表示とイメージ操作時のイベント処理は必須とまでは

記事を読む

Xcode5のプロジェクトへのファイルやフォルダの追加方法

Xcodeでアプリ開発を行う時に、イメージ(画像)の表示は必須な処理であると言えます。 本エントリ

記事を読む

Objective-C(Xcode)でイメージのアニメーション表示を行う。

「Xcode5でイメージ(画像)を表示&操作する」では画面に表示されているイメージをタップし

記事を読む

Xcode&Objective-Cのまとめエントリー

エントリーもまずまず揃ってきたので、まとめのエントリーを作成しておこうと思います。 基本的には、各

記事を読む

Xcode5でUnitTest(XCTestフレームワーク)を利用してみる。

Xcode5(iOS7対応バージョンの統合開発)を利用するので、当然言語はObjective-Cです

記事を読む

Xcode5の「Auto Layout」機能の使い方[Pin制約の設定方法]

「基礎知識と制約(Align:アライメント)の設定方法」に引き続き、「Auto Layout」に必要

記事を読む

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

動画で英語を学習できるiOSの無料アプリCapTubeをリリースいたしました。

個人では初となるiOSアプリをリリースいたしました。 何度もリジ

no image
Ruby on rails4系でBootstrapを利用するためのtips

MacでRuby on rails4系のBootstrapを利用しよう

no image
Java、Eclipse、JUnit関連のエントリーの移行のお知らせ

Java、Eclipse、JUnit関連のエントリーは http:/

iOS8開発者向けお勧め本紹介[詳細! Swift iPhoneアプリ開発 入門ノート Swift 1.1+Xcode 6.1+iOS 8.1対応]

iOS7開発者向けお勧め本紹介を以前に紹介させていただきまいたが、今回

Swift入門(Xcode6のXCTestフレームワークで学ぶ) 第二回「関数(メソッド)とクロージャーの利用方法」

前回はSwiftの概要をザックリと説明させていただきました。 今

→もっと見る

Optimization WordPress Plugins & Solutions by W3 EDGE
PAGE TOP ↑