最近cocoapodとかでSDKを導入することは多いと思ったのですが、対応してないのか説明がなくて直接frameworkを入れてということがあります。今回前にもあったのに知識として定着していなかったので一回最初(framework)作るところから最後(自作frameworkを自作のプロジェクトで使う)までやって見ようと思って、思いの外、不思議な工程じゃないとうまく使えないなんてこともあったのでここに書いておこうと思いました。警告も全てちゃんと無くしました。
全てをスクリーンショットで説明仕切れないかと思い、githubにファイルをあげて何をしたか細かくcommitで書いています。(っと言っても今回これにまとを絞っているのでコミット数はそんなにたくさんありません。)とか言いながらなんとか頑張ってgithubより分かりやすくなったカモです。自分の作成したいメソッドとか今回メソッドなにしたかまで見たい方はgithubで見てください!!
objective-cのframeworkのgithubのurl
ここではその補足的なものをここでできたらと思っています。githubでcommit見てもわかるようには書いたつもりです。言葉足らずは許してください。また時間ある時にgithubのところにもスクリーンショットと補足など書こうかと思っています。
名前はなんでもいいのですが今回frameworkの名前はobjframeworkにしました。
次にframeworkの中にファイルを作成します。この中にメソッドを記述します。プロジェクト側でも作成できるためにhの記述を忘れないようにしてください。
frameworkのobjframework.h(framework作成時にもともとできているもの)に使おうと思っているヘッダーファイルを記述してください。※不思議に感じた所、この記述は最初にしますが、プロジェクトで入れた後はこのきじゅつを削除します。
次にコードでもいけるかと思いますが、hファイルごとpublicにうつしてください。
次に一度ビルどして置いてください。確かこれでframework自体が物体化するとか前にあった気がしたので…
次にframework自体のありかを見つけるために以下のようにして探してください。ダイヤモンドみたいなのがそうです。
次に新規プロジェクトを作成してください。そこに今回は先ほど見つけたのをドロップしました。Add to…でもできるみたいですが、今回はこんな感じで入れました。
ドロップ後にEmbedded Binariesにプラスの所から入れてください。入れると下のLinked Frameworks and Librariesが重複するので一つはマイナスで決してください。
プロジェクトにファイル名は適当で構わないのでobjective-c(mファイル)を作成してください。
とこのような感じで出てくるのでCreate Bridging Hederをクリックして作成してください。
作成したBridging Headerに下のように#import <フレームワーク名/使うヘッダーファイル>のように書いてください。
そして#importの下に書いていた#import "sample.h"は消します。
使いたいところで以下のような感じで記述すれば
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let a = sample1()
a.sampletext()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
}
完成 今回はログを出すだけのものを作成したのでログが出ればOKです。
ちなみに黄色の警告気になったので解除できた方法あげておきます。まずframeworkのところから以下のように辿ってって、module.modulemapをクリック。
objframeworkのところをsample1.hに変更したら警告なくなりました。
なのでframework使いこなすにはここら辺知識つけないと行けないかもです。
本来がこのやり方であっているのかは定かではありませんが、絶対できた手順を書いときたかったので書きました。githubに簡単ですが、frameworkもあげたのでなんか適当に使ってください。
今度は頑張れたらこの逆バージョンも書こうかと思っています。
※なぜかシュミレーターiPhone5のみおかしくなります。SEとか6とか7Plusとかは大丈夫なのに……。