Suche senden
Hochladen
Embedded framework and so on
•
3 gefällt mir
•
1,825 views
T
toyship
Folgen
Embedded Framework with ObjC and Swift Swift namespace
Weniger lesen
Mehr lesen
Melden
Teilen
Melden
Teilen
1 von 48
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Swift Protocol and Selector
Swift Protocol and Selector
toyship
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
Syo Ikeda
Xcode and iTC submission topics
Xcode and iTC submission topics
Syo Ikeda
Swift勉強会
Swift勉強会
Nagamine Hiromasa
ようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへ
KinkumaDesign
みんなでおばけになる #mlkcca
みんなでおばけになる #mlkcca
Hikari Fukasawa
SwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよ
Syo Ikeda
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
Empfohlen
Swift Protocol and Selector
Swift Protocol and Selector
toyship
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
Syo Ikeda
Xcode and iTC submission topics
Xcode and iTC submission topics
Syo Ikeda
Swift勉強会
Swift勉強会
Nagamine Hiromasa
ようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへ
KinkumaDesign
みんなでおばけになる #mlkcca
みんなでおばけになる #mlkcca
Hikari Fukasawa
SwiftでAndroidアプリ書けるってよ
SwiftでAndroidアプリ書けるってよ
Syo Ikeda
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Kenichi Mukai
laravel x モバイルアプリ
laravel x モバイルアプリ
Masaki Oshikawa
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Masaru Gushiken
ObjectMapperでJSONマッピング
ObjectMapperでJSONマッピング
Syo Ikeda
Dynamic frameworks tips
Dynamic frameworks tips
Syo Ikeda
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
OpenShift のある生活
OpenShift のある生活
Yoshimasa Tanabe
Swift入門
Swift入門
聡 中川
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
Apple watch対応アプリのポイントや基本実装・連携tips
Apple watch対応アプリのポイントや基本実装・連携tips
Fumiya Sakai
Jsug spring bootコードリーディング 接触篇 a contact
Jsug spring bootコードリーディング 接触篇 a contact
tsukasa tamaru
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
Shumpei Shiraishi
Lt 20150711
Lt 20150711
Tomoyuki Obi
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
Hirokazu Egashira
Swift 3 その基本ルールを眺める #cswift
Swift 3 その基本ルールを眺める #cswift
Tomohiro Kumagai
Java web application testing
Java web application testing
Tokuhiro Matsuno
behatエクステンションの作り方
behatエクステンションの作り方
Ryo Tomidokoro
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
Masahiko Asai
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
Weitere ähnliche Inhalte
Was ist angesagt?
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Kenichi Mukai
laravel x モバイルアプリ
laravel x モバイルアプリ
Masaki Oshikawa
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Masaru Gushiken
ObjectMapperでJSONマッピング
ObjectMapperでJSONマッピング
Syo Ikeda
Dynamic frameworks tips
Dynamic frameworks tips
Syo Ikeda
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
OpenShift のある生活
OpenShift のある生活
Yoshimasa Tanabe
Swift入門
Swift入門
聡 中川
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
Apple watch対応アプリのポイントや基本実装・連携tips
Apple watch対応アプリのポイントや基本実装・連携tips
Fumiya Sakai
Jsug spring bootコードリーディング 接触篇 a contact
Jsug spring bootコードリーディング 接触篇 a contact
tsukasa tamaru
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
Shumpei Shiraishi
Lt 20150711
Lt 20150711
Tomoyuki Obi
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
Hirokazu Egashira
Swift 3 その基本ルールを眺める #cswift
Swift 3 その基本ルールを眺める #cswift
Tomohiro Kumagai
Java web application testing
Java web application testing
Tokuhiro Matsuno
behatエクステンションの作り方
behatエクステンションの作り方
Ryo Tomidokoro
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
Masahiko Asai
Was ist angesagt?
(20)
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
laravel x モバイルアプリ
laravel x モバイルアプリ
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
ObjectMapperでJSONマッピング
ObjectMapperでJSONマッピング
Dynamic frameworks tips
Dynamic frameworks tips
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
OpenShift のある生活
OpenShift のある生活
Swift入門
Swift入門
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Apple watch対応アプリのポイントや基本実装・連携tips
Apple watch対応アプリのポイントや基本実装・連携tips
Jsug spring bootコードリーディング 接触篇 a contact
Jsug spring bootコードリーディング 接触篇 a contact
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
TechFeedのつくりかた - Angular2/Webpack/Ionic2/Cordova実践入門
Lt 20150711
Lt 20150711
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
AITCオープンラボ 第4回 IoT勉強会 〜 Pepper x IoT x Web 〜
Swift 3 その基本ルールを眺める #cswift
Swift 3 その基本ルールを眺める #cswift
Java web application testing
Java web application testing
behatエクステンションの作り方
behatエクステンションの作り方
Angular 4がやってくる!? 新機能ダイジェスト
Angular 4がやってくる!? 新機能ダイジェスト
Ähnlich wie Embedded framework and so on
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
Daisuke Hiraoka
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
miso- soup3
OpenGLプログラミング
OpenGLプログラミング
幸雄 村上
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hack
Takahiro Yoshimura
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
kenjis
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Akio Katayama
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめ
Hideaki Aoyagi
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
david9142
LT発表資料
LT発表資料
murajun1978
Storyboard
Storyboard
Yukihiko Kagiyama
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
papamitra
JavaScript.Next Returns
JavaScript.Next Returns
dynamis
scala-kaigi1-sbt
scala-kaigi1-sbt
Kenji Yoshida
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
KUNITO Atsunori
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Masataka MIZUNO
Driverについて
Driverについて
幸雄 村上
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
DevTakas
Xcode4 project template (slide)
Xcode4 project template (slide)
Wataru Kimura
Ähnlich wie Embedded framework and so on
(20)
Appsody でnodejsのアプリを立ち上げよう!
Appsody でnodejsのアプリを立ち上げよう!
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
OpenGLプログラミング
OpenGLプログラミング
GroovyなAndroidテスト #atest_hack
GroovyなAndroidテスト #atest_hack
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
AspectMock 最強のモッキングフレームワーク
AspectMock 最強のモッキングフレームワーク
SDLoader SeasarCon 2009 Whire
SDLoader SeasarCon 2009 Whire
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめ
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
Netラボ2012年6月勉強会 マイクロソフトのオープンソース戦略を考える
LT発表資料
LT発表資料
Storyboard
Storyboard
ScalaでAndroidアプリ開発
ScalaでAndroidアプリ開発
JavaScript.Next Returns
JavaScript.Next Returns
scala-kaigi1-sbt
scala-kaigi1-sbt
OpenWhisk - Docker action で MeCab を動かす
OpenWhisk - Docker action で MeCab を動かす
クラウド開発に役立つ OSS あれこれ
クラウド開発に役立つ OSS あれこれ
Driverについて
Driverについて
ASP.NET Core WebAPIでODataを使おう
ASP.NET Core WebAPIでODataを使おう
Xcode4 project template (slide)
Xcode4 project template (slide)
Mehr von toyship
Time for Xcode Behavior
Time for Xcode Behavior
toyship
Notifications in iOS10
Notifications in iOS10
toyship
Universal Link
Universal Link
toyship
Can we live in a pure Swift world?
Can we live in a pure Swift world?
toyship
What's new Swift3
What's new Swift3
toyship
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
My first tvOS
My first tvOS
toyship
3D touch for iOS
3D touch for iOS
toyship
Contents blocker on iOS9
Contents blocker on iOS9
toyship
はじめてのWKInterfaceController
はじめてのWKInterfaceController
toyship
App extension for iOS
App extension for iOS
toyship
サーバーからiOSアプリを変更する
サーバーからiOSアプリを変更する
toyship
Xcode bot
Xcode bot
toyship
AVSpeechSynthesizerとロケール
AVSpeechSynthesizerとロケール
toyship
Mehr von toyship
(14)
Time for Xcode Behavior
Time for Xcode Behavior
Notifications in iOS10
Notifications in iOS10
Universal Link
Universal Link
Can we live in a pure Swift world?
Can we live in a pure Swift world?
What's new Swift3
What's new Swift3
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
My first tvOS
My first tvOS
3D touch for iOS
3D touch for iOS
Contents blocker on iOS9
Contents blocker on iOS9
はじめてのWKInterfaceController
はじめてのWKInterfaceController
App extension for iOS
App extension for iOS
サーバーからiOSアプリを変更する
サーバーからiOSアプリを変更する
Xcode bot
Xcode bot
AVSpeechSynthesizerとロケール
AVSpeechSynthesizerとロケール
Embedded framework and so on
1.
EMBEDDED FRAMEWORK AND SO
ON 2015/02/18 @TachibanaKaoru
2.
自己紹介 • @TachibanaKaoru • VOYAGE
GROUP で働く iOS エンジニアで す。 • Blog : http://www.toyship.org/
3.
EMBEDDED FRAMEWORKとは
4.
IOS8のAPP EXTENSIONで導入され た、複数のプロセスから利用できる 共有ライブラリ
5.
ただし、制限があります
6.
IOSではアプリ内サンドボックスでし か使えません。アプリAからアプリBの EMBEDDED FRAMEWORKは使えない
7.
APP EXTENSIONくらいでしか 使えない
8.
でもとりあえず
9.
どんな感じか見てみましょう
10.
まずはOBJCで。
11.
ホストアプリをOBJCで作成
12.
新規TARGETで「COCOA TOUCH FRAMEWORK」を追加
13.
こんな感じでEMBEDDED FRAMEWORKが追加されます
14.
ホストアプリに、共通ヘッダー をよみこめば、すぐ使える。 #import "ViewController.h" // Embedded
Frameworkの共通ヘッダー #import "weather.h" @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Embedded Frameworkのクラス [[WTInformation sharedInstance] test]; }
15.
わりと簡単。
16.
でも、リアルプロジェクトに 導入しようとすると……
17.
……IOS7でビルドエラー!
18.
EMBEDDED FRAMEWORKは、APP EXTENSIONに伴って導入されたの で、IOS8からしか使えない
19.
IOS7対応のアプリでEMBEDDED FRAMWORKを使いたい
20.
でも、裏技があります。
21.
まずは、FRAMEWORKをリン クからはずしましょう。
22.
そして、そのFRAMEWORKを BUNDLEにいれます。
23.
そして、FRAMEWORKを実行 時によみだします。
24.
こんな感じ // for dlopen/dlclose #import
<dlfcn.h> @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Frameworkをロードする void *newframework = dlopen("./weather.framework/weather", RTLD_LAZY); // WTInformationクラスを作成 id loadedClass = [[NSClassFromString (@"WTInformation") alloc] init]; // メッセージを送る [loadedClass performSelector:@selector(logtoday:) withObject:nil withObject:nil]; }
25.
(え、これ審査にひっかかる んじゃないの?)
26.
大丈夫、公式ドキュメントに 書いてあります。
27.
ではSWIFTだとどうでしょう
28.
ホストアプリをSWIFTで作成
29.
新規TARGETで「COCOA TOUCH FRAMEWORK」を追加
30.
こんな感じでEMBEDDED FRAMEWORKが追加されます
31.
ライブラリ側にCATクラスを 作ってみる import Foundation public class
Cat{ public init(){ } public func meow(count: Int) -> String { println(" meow! (count)") return "meow (otheranimals version)" } }
32.
ライブラリをIMPORTすると、ホス トアプリからライブラリのアプリが 使えるようになります import otheranimals class ViewController:
UIViewController { override func viewDidLoad() { super.viewDidLoad() var cat1 : Cat = Cat() cat1.meow(3) }
33.
ここで唐突ですが
34.
SWIFTには NAMESPACEがあります
35.
やったー、これで AF*****とか TS*****とかPREFIXを書かなくてもよ くなるぞ!
36.
と思ったのもつかのま
37.
……でも NAMESPACEってど うやってつかうの?
38.
USING NAMESPACE とかないけど?
39.
実は、SWIFTのNAMESPACEは MODULE単位
40.
APPやEMBEDDED FRAMEWORKがMODULE
41.
SWIFTではEMBEDDED FRAMEWORK でNAMESPACEの分割ができる!
42.
ではちょっとNAMESPACEを 試してみましょう
43.
さきほど、ライブラリ側にCATクラス を作成しましたが、アプリ側にもCAT クラスを作成してみます。 import Foundation class Cat{
init(){ } func meow(count: Int) -> String { println(" にゃあ! (count)") return "meow (otheranimals version)" } }
44.
ホストアプリからよんでみる import otheranimals class ViewController:
UIViewController { override func viewDidLoad() { super.viewDidLoad() // App Version var cat1 : Cat = Cat() //ホストアプリのCatがよばれる cat1.meow(3) // Lib Version var cat2 : otheranimals.Cat = otheranimals.Cat() // ライブラリのCatがよばれる cat2.meow(5) } }
45.
NAMESPACEがあれば、同じアプ リ内でCATクラスが二つ使える!
46.
PREFIXをつけなくていい!
47.
まとめ • SwiftのEmbedded Frameworkいいかも。
48.
おまけ • Blogにもう少し詳しく書いてあるので、そち らもどうぞ。 • http://www.toyship.org/archives/2096 •
http://www.toyship.org/archives/2111 • http://www.toyship.org/archives/2099
Jetzt herunterladen