Xcode 6.1 で自家製フレームワークを追加する方法

適当に Xyz.framework を追加するだけでは、コンパイルは通っても起動後に下記のエラーになっていた。 dyld: Library not loaded: @rpath/Xyz.framework/Xyz Referenced from: /Users/xxxx/Library/Developer/CoreSimulator/Devices/xxxx-xxxx-xxxxxx/data/Containers/Bundle/Application/xxxx-xxxx-xxxxxx/Xxxxx.app/Xxxxx Reason: image not found プロジェクト設定の Build Phrases で以下を行う。 Link Binary With Libraries → + → [Add Other…] で生成したフレームワークを選択 Embed Frameworks → Destination を Frameworks に → + → ツリーからフレームワークを選択

2015年1月27日 · Toshimitsu Takahashi

Xcode 5 で既存プロジェクトを XCTest に乗り換えるときに嵌ったこと

すんなりできたこと テスト用ターゲットの Link Binaries With Libraries で SenTestingKit.frameworkを外して、XCTest.frameworkを追加した。 既存のテストを Edit → Refactor → Convert to XCTest… でコンバートした。 嵌ったこと テストケースが実行されない。 Build Phase の Wrapper Extension を xctest に変更する。 Library not loaded: 〜 エラーになる。 iOS シミュレータを iOS 6.1 にしていた(7 にする)。

2014年1月29日 · Toshimitsu Takahashi

Xcode 4 のユニバーサルプロジェクト構成を考える

Xcode 3 から Xcode 4 になってウィザードから生成されるプロジェクトの構成も変わっている。 iPhone, iPadで共通化するユニバーサルで、ユニットテストありにした Windows Base プロジェクトを生成すると下記のようになる。 ファイルシステム上は、プロジェクト名のフォルダにxcodeprojectフォルダさらに同名のプロジェクトフォルダとTestsがサフックスに付いたテストフォルダが並ぶ。 プロジェクトフォルダにはiPhone, iPadが並ぶ。 WindowExample - WindowExample.xcodeproj - WindowExample - iPhone - iPad - WindowExampleTests Xcode 3 のようにClasses, Resourcesがない。自分も経験的に、XIBファイルと対になるViewControllerクラスは並んでいた方が扱いやすい。テンプレートでクラスを追加したときに同時に生成されるのでまとまっていた方が良いだろう。 ユニーバサルであればビューのベース部分やそもそも共通クラスがある(Common)。さらにイメージファイルもグループ化すると良いだろう(Images)。ほかにもユーティリティ群などが並ぶだろう(Utilities)。 ファイルシステム上もiPhone, iPad, Common, Images, Utilitiesはフォルダにする。クラス数が多ければ各グループ内もさらにグループ化した方がいいだろう。 ただこれらのグループは、画面数の増加などアプリの修正・機能追加に伴って柔軟に変えられる方が良いと考える。よって、ファイルシステム上はフラットに管理することにする。 WindowExample - WindowExample.xcodeproj - WindowExample - iPhone - iPad - Common - Utilities - Images - WindowExampleTests Xcode は Visual Studio, Eclipse のようにプロジェクトのファイル構成がファイルシステムと同一ではない。Java をやってきた人には気持ち悪いかもしれない。パッケージや名前空間という概念は Objective-C にはない。グループはあくまでも人間から見た管理のしやすさだ。 Xcode はファイル追加後にファイルシステム上の移動をするのが非常に面倒である。このため、ファイルの上の場所は追加するときに確定させた方が良い。ただグループもフラットだと管理上破綻するだろう。これが前述のような構成にした理由だ。 まとめると、 プロジェクトフォルダ、テストフォルダを分ける。 プロジェクトフォルダの直下は、iPhone, iPad, iPhone・iPad共通でグループをわける。 これらのグループはそのままファイルシステム上フォルダ化にする。 第2階層以降のグループは Xcode プロジェクトのみで管理し、ファイルシステムには適用しない。 となる。

2011年8月29日 · Toshimitsu Takahashi