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

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

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


[objective-cのframeworkのgithubのurl](https://github.com/sachiko-kame/objframework)

[swift(ver3)のgithubのurl](https://github.com/sachiko-kame/swiftsample)

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



:hatched_chick:frameworkをまず作成します。
<img width="733" alt="スクリーンショット 2017-06-17 21.41.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/91c0c966-d30d-9f4d-f283-f8ed47d5487c.png">

:hatched_chick:名前はなんでもいいのですが今回frameworkの名前はobjframeworkにしました。
<img width="453" alt="スクリーンショット 2017-06-17 21.41.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/b0284f6a-4830-471c-7a71-03753675fd46.png">

:hatched_chick:次にframeworkの中にファイルを作成します。この中にメソッドを記述します。プロジェクト側でも作成できるためにhの記述を忘れないようにしてください。
<img width="1276" alt="スクリーンショット 2017-06-17 21.42.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/9e31c17f-76ab-2c0b-0968-fd8775bdc995.png">

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

<img width="761" alt="スクリーンショット 2017-06-17 23.40.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/65db321f-fc87-d60c-4314-36b78cbb2dfc.png">


:hatched_chick:次にコードでもいけるかと思いますが、hファイルごとpublicにうつしてください。
<img width="596" alt="スクリーンショット 2017-06-17 22.37.45.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/018c2251-44da-1e67-f1a0-c0bf4d2977fc.png">

:hatched_chick:うつし終わったやつです。
<img width="595" alt="スクリーンショット 2017-06-17 22.37.55.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/fe6302c2-e2a9-de87-cf86-eb4f4df072b7.png">

:hatched_chick:次に一度ビルどして置いてください。確かこれでframework自体が物体化するとか前にあった気がしたので…
<img width="44" alt="スクリーンショット 2017-06-17 22.38.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/72cc7110-b715-ae22-73ac-19d351d37e70.png">

:hatched_chick:次にframework自体のありかを見つけるために以下のようにして探してください。ダイヤモンドみたいなのがそうです。
<img width="414" alt="スクリーンショット 2017-06-17 22.39.11.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/6c9bf1ee-bb5f-8794-5189-3c62b34bad59.png">

:hatched_chick:次に新規プロジェクトを作成してください。そこに今回は先ほど見つけたのをドロップしました。Add to…でもできるみたいですが、今回はこんな感じで入れました。
<img width="1280" alt="スクリーンショット 2017-06-17 22.40.32.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/00f7cedb-5ad1-0bba-0499-e4671a892b52.png">

:hatched_chick:ドロップ後にEmbedded Binariesにプラスの所から入れてください。入れると下のLinked Frameworks and Librariesが重複するので一つはマイナスで決してください。
<img width="588" alt="スクリーンショット 2017-06-17 22.41.38.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/321cc74f-540e-ecef-e237-11dcc733c8e6.png">

:hatched_chick:上のがちゃんとできたやつ
<img width="601" alt="スクリーンショット 2017-06-17 22.41.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/60b4e905-da48-fce0-e7f8-644d8af7d4a8.png">

:hatched_chick:プロジェクトにファイル名は適当で構わないのでobjective-c(mファイル)を作成してください。
<img width="734" alt="スクリーンショット 2017-06-17 22.00.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/c0bca1c1-d605-f7e5-b361-c8aa288d86ab.png">

:hatched_chick:とこのような感じで出てくるのでCreate Bridging Hederをクリックして作成してください。
<img width="560" alt="スクリーンショット 2017-06-17 22.01.00.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/a525fb2a-36b4-5e8b-600c-d5a92fb06278.png">

:hatched_chick:作成したBridging Headerに下のように#import <フレームワーク名/使うヘッダーファイル>のように書いてください。
<img width="764" alt="スクリーンショット 2017-06-17 23.41.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/6604cb1e-9f1e-a069-ae9f-04c9b5e1f9b6.png">


:hatched_chick:そして#import<UIKit/UIKit.h>の下に書いていた#import "sample.h"は消します。
<img width="738" alt="スクリーンショット 2017-06-17 23.41.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/298be42a-ebb4-502f-ad5e-158b740cd548.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です。
<img width="379" alt="スクリーンショット 2017-06-17 22.51.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/ae67b07e-0fb6-6db7-23ca-c857fab4bbfe.png">


:dragon:ちなみに黄色の警告気になったので解除できた方法あげておきます。まずframeworkのところから以下のように辿ってって、module.modulemapをクリック。
<img width="616" alt="スクリーンショット 2017-06-18 13.20.01.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/1efd783c-3265-ebe4-a486-646fb67f936b.png">

:dragon:こんな感じのが出てくるので…
<img width="271" alt="スクリーンショット 2017-06-18 13.20.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/a294eb7d-f38a-2792-19e1-2d1fd2e8b357.png">

:dragon:objframeworkのところをsample1.hに変更したら警告なくなりました。
なのでframework使いこなすにはここら辺知識つけないと行けないかもです。
<img width="256" alt="スクリーンショット 2017-06-18 13.20.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/17f7f762-353c-8054-3d75-1730be6f44fc.png">

:dragon:警告消えたバージョン<img width="743" alt="スクリーンショット 2017-06-18 13.27.17.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/511b394c-84e2-52ae-abba-538a5e38f8ff.png">


:snowman:そのあとにクリーンとかたくさんすれば警告ぜろになりました！<img width="261" alt="スクリーンショット 2017-06-18 13.37.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/133940/3f983654-d9d0-a8f4-780f-ef96a01940b1.png">




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

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

<font color="blue">※なぜかシュミレーターiPhone5のみおかしくなります。SEとか6とか7Plusとかは大丈夫なのに……。</font>