CocoaPodsの使い方

 

iOSアプリの開発時に、先人たちの知恵の結晶であるライブラリを使えば、

生産性や品質が上がり、見た目もリッチなアプリが作れます。

そんなライブラリを管理してくれるツール CocoaPodsの使い方をメモしておきます。

 

確認環境:

Xcode 7.3

Ruby 2.3.1

 

CocoaPodsはRubyのGemとして公開されています。

ターミナルを起動して、以下のコマンドを実行します。

$ sudo gem install cocoapods

 

次にセットアップをします。

$ pod setup

 

ここまで完了したら、Xcodeで新規プロジェクトを作成します。

今回は、RealmSample001 という名前のプロジェクトを新規作成します。

 

ターミナルのcdコマンドで、新規作成した RealmSample001 プロジェクトの

RealmSample001.xcodeproj がある場所に移動します。

その場所で、以下のコマンドを実行します。

$ pod init

 

pod init すると、Podfile が生成されます。Podfile の中身はこんな感じです。


Tip_02_01_010a

 

今回は、iOSのデータベースライブラリ Realm を使ってみます。

Podfile の 「target ‘RealmSample001’」

の箇所に、「pod ‘Realm’」 を追加します。

 

ここまで完了したら、ターミナルで以下のコマンドを実行します。

(この時、Xcodeのプロジェクトは閉じておいた方がいいかもしれません。)

$ pod install

 

pod install すると、

RealmSample001.xcworkspace が生成されます。

 

以降の作業は、この.xcworkspace から開いたプロジェクトで行います。

元からあった.xcodeprojから開くとビルドエラーとなりますので、注意してください。

 

既存アプリをiPhone6に対応させる方法

 

iPhone6/6 Plus が出る前に作成した、既存アプリをiPhone6に対応させる方法をメモしておきます。

 

確認環境:Xcode 7.2

 

iPhone6/6 Plus が出る前に作成した、既存アプリを起動すると、

こんな感じで、画面の上端と下端に黒い余白ができてしまいます。


Tip_02_01_009a

 

Xcodeのメニューから File -> New -> File を選択し「Launch Screen」ファイルを新規作成します。

 

あとは、Xcodeで 「Target」の「General」タブの

「App Icons and Launch Images」セクションの「Launch Screen File」で

新規作成した「Launch Screen」ファイルを指定します。


Tip_02_01_009b

 

画面の上端と下端に黒い余白がなくなりました。


Tip_02_01_009c

 

例外エラー時のブレークポイント設定

 

例外エラーの箇所で止まるようにブレークポイント設定する方法をメモしておきます。

結構、便利です。

 

確認環境:Xcode 7.2

 

1. ナビゲーターエリアでブレークポイントナビゲータを選択。

2. 左下隅の「+」ボタンを押す。


Tip_02_01_008a

 

3. 「Add Exception Breakpoint」を選択。


Tip_02_01_008b

 

4. ポップアップが表示されるので、好みで調整。


Tip_02_01_008c

 

プロジェクトにファイルをコピーする時の注意

 

Xcodeのプロジェクトに既存ファイルをコピーする時の注意をメモしておきます。

 

確認環境:Xcode 7.2

 

Xcodeのプロジェクトに既存ファイルをコピーしようとすると、こんなようなダイアログが出ます。


Tip_02_01_007a

 

結論からいうと、

「Destination」の「Copy items if needed」についてですが、

チェックを入れる:

Xcodeにファイルそのものが追加される。

チェックをはずす:

Xcodeにファイルそのものは追加されない。Xcodeにショートカットのようなものが追加される。

 

それから「Added folders」の「Create groups」と「Create folder references」の違いですが、

フォルダを含めてファイルを追加(階層を持つファイルの追加)する時に関係がある項目のようです。

Create groups:

Xcodeでは黄色のフォルダで表示される。

NSBundle型オブジェクトのメソッドでは、パスを指定する必要がない。ファイル名を指定するだけでよい。

したがって、リソースの量が少なく簡単にアクセスしたい場合はこちらが向いている。

Create folder references:

Xcodeでは青色のフォルダで表示される。

NSBundle型オブジェクトのメソッドでは、パスを含めて指定する必要がある。

したがって、異なる階層に、同じ名前のファイルがあるようなリソースにアクセスしたい場合はこちらが向いている。

ちょっとあやしいのですが、一応、こんな感じかと。

 

これを実際に検証してみます。

 

「Destination」の「Copy items if needed」のチェックを入れます。


Tip_02_01_007b

 

Xcodeにファイルが追加されてます。


Tip_02_01_007c

 

Finderで確認しても、Xcodeにファイルが追加されてます。


Tip_02_01_007d

 

今度は、「Destination」の「Copy items if needed」のチェックをはずします。


Tip_02_01_007e

 

Xcodeにファイルが追加されてますが、


Tip_02_01_007f

 

Finderで確認すると、Xcodeにファイルが追加されていません。


Tip_02_01_007g

 

次は、「Added folders」の「Create groups」と「Create folder references」の違いについてです。

これを実際に検証してみます。

 

こんな階層構造のファイルを追加していきます。


Tip_02_01_007h

 

「Added folders」で「Create groups」を選択。


Tip_02_01_007i

 

Xcodeにファイルが追加されてます。

フォルダが黄色で追加されてます。


Tip_02_01_007j

 

今度は、「Added folders」で「Create folder references」を選択。


Tip_02_01_007l

 

Xcodeにファイルが追加されてます。

フォルダが青色で追加されてます。


Tip_02_01_007m

 

ここで追加したファイルを、こんな感じに、NSBundle pathForResource で、パスを取得してみます。

9行目がポイントです。

「Create groups」でファイルを追加した場合は、ファイルパスの取得に成功します。

一方、「Create folder references」でファイルを追加した場合は、ファイルパスの取得に失敗します。

「Create folder references」でファイルを追加した場合は、

13行目のように、ファイルのパスを含めて指定してあげないとダメでした。

Navigation Controllerを追加する方法

 

Navigation Controllerを簡単に追加する方法をメモしておきます。

 

確認環境:Xcode 7.2

 

1. ナビゲーターエリアでプロジェクトを選択。

2. Storyboardを選択。

3. エディターエリアで Navigation Controller を追加したい View Contoroller を選択。


Tip_02_01_006a

 

または、

1. エディターエリアの左下端のボタンを押して「Document Outline」を表示。

2. 「Document Outline」からNavigation Controller を追加したい View Contoroller を選択。


Tip_02_01_006d

 

1. Xcodeのメニューから「Editor」->「Embed In」->「Navigation Controller」を選択。


Tip_02_01_006b

 

Navigation Controllerが追加されました。


Tip_02_01_006c

 

Xcode デバッグ系ショートカットキー

 

確認環境:Xcode 7.2

 

Run:Command + R

Stop:Command + 「 . 」

ステップオーバー:F6

ブレイクポイントの箇所から1行ずつステップ実行。

コールしている関数の中には入らない。

ステップイン:F7

ブレイクポイントの箇所から1行ずつステップ実行。

コールしている関数の中に入る。

ステップオーバー:F8

今いる関数の中から抜けて、呼び出し元に戻る。

Continue/Pause:Control + Command + Y

ブレイクポイント非アクティブ/アクティブ:Command + Y

ブレイクポイント追加/削除:Command + 「¥」

カーソルで選択した行に追加される。ステップ実行中の箇所ではない。

ビルド:Command + B

クリア:Shift + Command + K

コメントアウト/コメントイン:Command + 「 / 」


Tip_02_01_005a

 


Tip_02_01_005b

 


Tip_02_01_005c

 

ファンクションキーはデフォルトだと、「fn」キーを押しながら「F6」とかを押さないといけない設定になっているので、うっとうしいので、システム環境設定で「Fn」キーを押さなくてもいいように変更しておくとさらに便利です。

 

Macのメニューから「システム環境設定」->「キーボード」を選択。


Tip_02_01_005d

 

「F1、F2などの全てのキーを・・・」にチェックを入れる。


Tip_02_01_005e

 

あと、スタックトレースでは、ブレイクポイントの箇所にいたるまで、どんな順番で関数がコールされたかが確認できます。

スタックトレースの上ほど、直近のコールで、下にいくほど古いコールになります。

 

1.ナビゲーターエリアからデバッグナビゲーターを選択。

または、デバッグエリアの上端のスレッドの右の箇所をクリック。


Tip_02_01_005f

 

Storyboardのエントリーポイント

 

勢いあまって、エントリポイントを消してしまった。。

そんな時、エントリーポイントを復活させる方法をメモしておきます。

 

確認環境:Xcode 7.2

 

エントリーポイント とは、Storyboardでこんなふうに表示される矢印。

アプリを起動時に最初に表示されるViewを指定します。


Tip_02_01_004a

 

1. ユーティリティエリアを表示する。

2. アトリビュート インスペクタを選択。

3. 「View Controller」セクションの「Is Initial View Controller」にチェックを入れる。


Tip_02_01_004b

 

Deployment Target と Base SDK の違い

 

Xcodeに「Deployment Target」と「Base SDK」と似たような設定がありますが、この2つの違いってわかります?

どちらもiOSのバージョンを指定するんですが。

 

ようするに、

・Deployment Target:

あなたが、なんかのアプリをつくって、App Storeで公開したとします。そのアプリをダウンロードして使う人のiPhoneのiOSのバージョンを指定する。

最新版を指定すれば、 新しい機能をすべて利用できますが、旧版を使っているユーザは実行できません。

逆に少し古い版を指定すれば、実行できるユーザは多くなりますが、最新の機能は利用できない。

・Base SDK:

あなたが、なんかのアプリをつくるとします。そのアプリをつくる時に、自分のiPhoneで動作確認しますが、その自分のiPhoneのiOSのバージョンより高いバージョンを指定する。

そうしないと、デバッグできない。なので、通常、もっとも新しいバージョンを指定する。

という違いがあります。

 

参考資料:

 

確認環境:Xcode 7.2

 

Deployment Target:

1. ナビゲーターエリアでプロジェクトを選択。

2. エディターエリアの上端でターゲットを選択し、「General」を選択。

3. 「Deployment Info」セクションの「Deployment Target」にiOSのバージョンを指定。


Tip_02_01_003a

 

Base SDK:

1. ナビゲーターエリアでプロジェクトを選択。

2. エディターエリアの上端でターゲットを選択し、「Build Settings」を選択。

3. エディターエリアの上端で「All」を選択。(「Basic」のままだと表示されない。)

4. 「Architectures」セクションの「Base SDK」にiOSのバージョンを指定。


Tip_02_01_003b

 

余談ですが、「Deployment Target」は「配備ターゲット」って翻訳されてました。

あと「SDK」は「Software Development Kit」の略で、ソフトウェア開発ツール一式のことです。

ざっくりいえば、Xcodeのことですよね。

 

クラスファイル名を変更する

 

Xcodeでクラスファイル名を変更する方法をメモしておきます。

確認環境:Xcode 7.2

 

NG:

ナビゲーターエリアでクラスファイルをダブルクリックしてファイル名を変更すると、エラーになります。

この方法ではダメ。


Tip_02_01_002a

 

正しい方法:

1. ナビゲーターエリアで名前を変更したいクラスファイルの「.h」ファイルを選択。

2. エディターエリアで名前を変更したクラス名を選択。

3. 右クリックメニューで「Refactor」->「Rename」を選択。


Tip_02_01_002b

 

1. ダイアログに変更したい名前を入力し、「Preview」ボタンを押下。


Tip_02_01_002c

 

1.変更点を確認し、「Save」ボタンを押下。


Tip_02_01_002d

 

なお、各ファイルの先頭にあるコメントの箇所のクラスファイル名は変更されないようなので、注意してください。

 

追記 2016/6/26

Swiftのプロジェクトでは、「Refactor」できませんでした。

Appleさん、対応お願いします。

確認環境:Xcode 7.3

 

Storyboardからプレビュー確認する方法

 

Xcode 6.0からプレビュー機能が追加されたようです。便利なのでメモしておきます。

確認環境:Xcode 7.2

 

1. ナビゲーターエリアからストーリーボードを選択。

2. ストーリーボードでプレビュー確認したいViewを選択。

3. ツールバーのアシスタントエディタを選択。


Tip_02_01_001a

1. エディタエリアの上端をクリックして「Preview」を選択。


Tip_02_01_001b

 

1. さらに、「Preview」エリアの左下の「+」ボタンを押して、追加したいサイズを選択。


Tip_02_01_001c

 

こんな感じで、プレビューが表示されます。


Tip_02_01_001d