LoginSignup
8

More than 5 years have passed since last update.

XCode6でFramework Templateを使う

Last updated at Posted at 2014-12-31

はじめましてゆう@あんのうんです。初投稿なので、何か不備があったらご連絡ください。

概要

XCode6でFramework Templateが新機能として追加され、今まで面倒だったFramework化が簡単にできるようになりました。
本記事で、その手順を紹介します。

この記事では、Frameworkと、Frameworkを組み込むアプリの2つのProjectが登場しますので、以下で呼称します。
また、新規にProjectを作る際の紹介を行います。

  • Framework側
  • App側

Framework側 : Project作成

File -> New -> Projectで新規Project作成画面を出し、
Framework & Libraryから、Cocoa Touch Frameworkを選択します
(ここでProject名は、ProjectUnknownFrameworkとしました)

capture-01.png

すると、以下の様にファイルが展開されます。

capture-02.png

Framework側 : 独自機能の追加

追加したい機能をこれまで通り追加していくだけです。

ここでは、私がよく使っている、(と言うかiOSデベロッパーの他の皆様がよくやられている)ログマクロを一つ追加してみます。

capture-03.png

PUMacros.h
というファイルを一つ作り、中に以下のマクロを記載します。

#ifdef DEBUG

#define LOG(format, ...) NSLog((format ), __FUNCTION__, ##__VA_ARGS__);

#endif

Framework側 : App側からも参照できるようにする

「Framework名.h」ファイル(私の場合は、ProjectUnknownFramework.h)に、以下の形でimport文を記載します

#import <Framework名/ファイル名>

今回の例の場合は、以下の様に記載します

#import <ProjectUnknownFramework/PUMacros.h>

Framework側 : Build

通常のApp開発と同様にCmd+bでbuildします。

Framework側 : 作成されたFrameworkを確認。

buildが終わると、以下のPathにframeworkが作成されていますので、確認します。

~/Library/Developer/Xcode/DerivedData/{Project名}/Build/Products

iPhoneシミュレータで作成したので、この場合は、以下に格納されています

~/Library/Developer/Xcode/DerivedData/{Project名}/Build/Products/Debug-iphonesimulator/

これをFinderで見ると

Failed to upload "capture-04.png": Please try again later.

.framework形式のファイルが作成されていました。

App側 : 作成したFrameworkの取り込み

先ほど作成された、.frameworkをApp側の以下にDrag & Dropで取り込みます。

capture-05.png

Link Binary With Librariesに、上記の通り、.frameworkファイルを取り込みました。

App側 : 実際に利用する。

実際に利用する場合は、

#import フレームワーク名;

で利用できます。

先ほどの例で作成したマクロを実際にViewController上で呼び出してみます。

#import "ViewController.h"

@import ProjectUnknownFramework;


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    [self runMacro];
}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)runMacro
{
    LOG(@"hogehgoe");
}

capture-06.png

実際にLogを出力する事が出来ました。

最後に

XCode6で追加されたFramework Templateを思考錯誤しながらやってみたので、無駄な事とか、もっと簡単なやり方等がありましたら、この記事もしくは、運営しているBlog等にご教授頂ければ幸いですmm

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8