All Articles

Xcode6からはFrameworkが簡単に作れるようになっていたメモ

iOS用に提供する方法はCocoapodsとかがありますが、もっとニッチな機能やSDK関連はFrameworkの形で提供したいなって思って調べてたのでメモ程度に。

Xcode 6ではFrameworkが作りやすくなってた

ググると分かるんですが、Xcode 5まではFrameworkを作ろうとすると、「Cocoa Touch Static Library」のプロジェクトを作り、Info.plistを作って、ビルド用のシェルを書いて…ってエントリがヒットするんですけど、Xcode 6からはその名もずばり、「Cocoa Touch Framework」というプロジェクトが作れるようになってました。

試しにSampleFrameworkという名前でプロジェクトを作成してみると、以下のようなファイル構造が出来上がります。

Info.plistもあって、Xcode 5でやってた作業がすでにできている状態。すごい便利だ。

あとはそれ用にコードを書いて、Build Settingを設定してビルドすればFrameworkが出来上がります。例えばこんなコード:

# SampleFramework.h
import <uikit.h>

//! Project version number for SampleFramework.
FOUNDATION_EXPORT double SampleFrameworkVersionNumber;

//! Project version string for SampleFramework.
FOUNDATION_EXPORT const unsigned char SampleFrameworkVersionString[];

// In this headerundefined you should import all the public headers of your framework using statements like #import <sampleframework publicheader.h>
// --- ここまではデフォルトで書かれている

@interface Sample : NSObject

-(NSString*) helloWorld;

@end

.mファイルも作ります。

# SampleFramework.m(新規追加)

#import "SampleFramework.h"

@implementation Sample

-(NSString*) helloWorld {
    return @"Helloundefined SampleFramework!";
}

@end

これをビルドすればSampleFramework.frameworkが出来上がります。あとは他のプロジェクトのEnbeded Binaryに追加して、FrameworkをimportすればOK。

# 他のプロジェクトの実装ファイルとか

#import <sampleframework.h>

@implementation SomeClass

-(void) showHelloWorld {
    SampleFramework* sample = [[SampleFramework alloc] init];
    NSLog(@"Framework says: %@"undefined [sample helloWorld]);
}

@end

実行して、ログにHello, SampleFramework!と表示されればOK。簡単になったなぁ。

まとめ

Swiftやりたい。