LoginSignup
1
3

More than 5 years have passed since last update.

objectve-cでframework作成してswiftのプロジェクトで使用するまで

Last updated at Posted at 2017-06-17

最近cocoapodとかでSDKを導入することは多いと思ったのですが、対応してないのか説明がなくて直接frameworkを入れてということがあります。今回前にもあったのに知識として定着していなかったので一回最初(framework)作るところから最後(自作frameworkを自作のプロジェクトで使う)までやって見ようと思って、思いの外、不思議な工程じゃないとうまく使えないなんてこともあったのでここに書いておこうと思いました。:shamrock:警告も全てちゃんと無くしました。:star:

全てをスクリーンショットで説明仕切れないかと思い、githubにファイルをあげて何をしたか細かくcommitで書いています。(っと言っても今回これにまとを絞っているのでコミット数はそんなにたくさんありません。)とか言いながらなんとか頑張ってgithubより分かりやすくなったカモです。自分の作成したいメソッドとか今回メソッドなにしたかまで見たい方はgithubで見てください!!

objective-cのframeworkのgithubのurl

swift(ver3)のgithubのurl

ここではその補足的なものをここでできたらと思っています。githubでcommit見てもわかるようには書いたつもりです。言葉足らずは許してください。また時間ある時にgithubのところにもスクリーンショットと補足など書こうかと思っています。:hatching_chick:

:hatched_chick:frameworkをまず作成します。
スクリーンショット 2017-06-17 21.41.14.png

:hatched_chick:名前はなんでもいいのですが今回frameworkの名前はobjframeworkにしました。
スクリーンショット 2017-06-17 21.41.47.png

:hatched_chick:次にframeworkの中にファイルを作成します。この中にメソッドを記述します。プロジェクト側でも作成できるためにhの記述を忘れないようにしてください。
スクリーンショット 2017-06-17 21.42.33.png

:hatched_chick:frameworkのobjframework.h(framework作成時にもともとできているもの)に使おうと思っているヘッダーファイルを記述してください。※不思議に感じた所、この記述は最初にしますが、プロジェクトで入れた後はこのきじゅつを削除します。

スクリーンショット 2017-06-17 23.40.55.png

:hatched_chick:次にコードでもいけるかと思いますが、hファイルごとpublicにうつしてください。
スクリーンショット 2017-06-17 22.37.45.png

:hatched_chick:うつし終わったやつです。
スクリーンショット 2017-06-17 22.37.55.png

:hatched_chick:次に一度ビルどして置いてください。確かこれでframework自体が物体化するとか前にあった気がしたので…
スクリーンショット 2017-06-17 22.38.54.png

:hatched_chick:次にframework自体のありかを見つけるために以下のようにして探してください。ダイヤモンドみたいなのがそうです。
スクリーンショット 2017-06-17 22.39.11.png

:hatched_chick:次に新規プロジェクトを作成してください。そこに今回は先ほど見つけたのをドロップしました。Add to…でもできるみたいですが、今回はこんな感じで入れました。
スクリーンショット 2017-06-17 22.40.32.png

:hatched_chick:ドロップ後にEmbedded Binariesにプラスの所から入れてください。入れると下のLinked Frameworks and Librariesが重複するので一つはマイナスで決してください。
スクリーンショット 2017-06-17 22.41.38.png

:hatched_chick:上のがちゃんとできたやつ
スクリーンショット 2017-06-17 22.41.47.png

:hatched_chick:プロジェクトにファイル名は適当で構わないのでobjective-c(mファイル)を作成してください。
スクリーンショット 2017-06-17 22.00.48.png

:hatched_chick:とこのような感じで出てくるのでCreate Bridging Hederをクリックして作成してください。
スクリーンショット 2017-06-17 22.01.00.png

:hatched_chick:作成したBridging Headerに下のように#import <フレームワーク名/使うヘッダーファイル>のように書いてください。
スクリーンショット 2017-06-17 23.41.21.png

:hatched_chick:そして#importの下に書いていた#import "sample.h"は消します。
スクリーンショット 2017-06-17 23.41.31.png

:hatched_chick:使いたいところで以下のような感じで記述すれば

ViewController.swift
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.
    }


}


:hatched_chick:完成 今回はログを出すだけのものを作成したのでログが出ればOKです。
スクリーンショット 2017-06-17 22.51.17.png

:dragon:ちなみに黄色の警告気になったので解除できた方法あげておきます。まずframeworkのところから以下のように辿ってって、module.modulemapをクリック。
スクリーンショット 2017-06-18 13.20.01.png

:dragon:こんな感じのが出てくるので…
スクリーンショット 2017-06-18 13.20.17.png

:dragon:objframeworkのところをsample1.hに変更したら警告なくなりました。
なのでframework使いこなすにはここら辺知識つけないと行けないかもです。
スクリーンショット 2017-06-18 13.20.12.png

:dragon:警告消えたバージョンスクリーンショット 2017-06-18 13.27.17.png

:snowman:そのあとにクリーンとかたくさんすれば警告ぜろになりました!スクリーンショット 2017-06-18 13.37.25.png

本来がこのやり方であっているのかは定かではありませんが、絶対できた手順を書いときたかったので書きました。githubに簡単ですが、frameworkもあげたのでなんか適当に使ってください。

今度は頑張れたらこの逆バージョンも書こうかと思っています。:shamrock:

※なぜかシュミレーターiPhone5のみおかしくなります。SEとか6とか7Plusとかは大丈夫なのに……。

1
3
0

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
1
3