Suche senden
Hochladen
Swift Protocol and Selector
•
1 gefällt mir
•
1,445 views
T
toyship
Folgen
We cannot use protocol extension as a selector?
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 18
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Embedded framework and so on
Embedded framework and so on
toyship
ようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへ
KinkumaDesign
Swift勉強会
Swift勉強会
Nagamine Hiromasa
みんなでおばけになる #mlkcca
みんなでおばけになる #mlkcca
Hikari Fukasawa
【B-1】kintoneでお手軽コールセンター!
【B-1】kintoneでお手軽コールセンター!
Sakae Saito
laravel x モバイルアプリ
laravel x モバイルアプリ
Masaki Oshikawa
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
Empfohlen
Embedded framework and so on
Embedded framework and so on
toyship
ようこそ! Swift Playgroundsへ
ようこそ! Swift Playgroundsへ
KinkumaDesign
Swift勉強会
Swift勉強会
Nagamine Hiromasa
みんなでおばけになる #mlkcca
みんなでおばけになる #mlkcca
Hikari Fukasawa
【B-1】kintoneでお手軽コールセンター!
【B-1】kintoneでお手軽コールセンター!
Sakae Saito
laravel x モバイルアプリ
laravel x モバイルアプリ
Masaki Oshikawa
Laravel5を使って開発してみた
Laravel5を使って開発してみた
Takeo Noda
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
milkcocoa入門@milkcocoa meetup#1
milkcocoa入門@milkcocoa meetup#1
Syuhei Hiya
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Takashi Aoe
Jsug spring bootコードリーディング 接触篇 a contact
Jsug spring bootコードリーディング 接触篇 a contact
tsukasa tamaru
OpenShift のある生活
OpenShift のある生活
Yoshimasa Tanabe
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Toshiaki Maki
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
behatエクステンションの作り方
behatエクステンションの作り方
Ryo Tomidokoro
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Kenichi Mukai
Swift入門
Swift入門
聡 中川
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Toshiaki Maki
iOS 8 Widget ~ 導入から Tips まで
iOS 8 Widget ~ 導入から Tips まで
Yuki Tanabe
Java web application testing
Java web application testing
Tokuhiro Matsuno
Lt 20150711
Lt 20150711
Tomoyuki Obi
Griffon10 in groovy_fx
Griffon10 in groovy_fx
kimukou_26 Kimukou
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
Selenium2(web driver) ide編
Selenium2(web driver) ide編
Tetsuya Hasegawa
20191003 classi night-04
20191003 classi night-04
Akihiko Kigure
Can we live in a pure Swift world?
Can we live in a pure Swift world?
toyship
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
Study Group by SciencePark Corp.
Weitere ähnliche Inhalte
Was ist angesagt?
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
Yuki Okada
milkcocoa入門@milkcocoa meetup#1
milkcocoa入門@milkcocoa meetup#1
Syuhei Hiya
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Toshiaki Maki
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Takashi Aoe
Jsug spring bootコードリーディング 接触篇 a contact
Jsug spring bootコードリーディング 接触篇 a contact
tsukasa tamaru
OpenShift のある生活
OpenShift のある生活
Yoshimasa Tanabe
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Toshiaki Maki
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
behatエクステンションの作り方
behatエクステンションの作り方
Ryo Tomidokoro
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Kenichi Mukai
Swift入門
Swift入門
聡 中川
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Toshiaki Maki
iOS 8 Widget ~ 導入から Tips まで
iOS 8 Widget ~ 導入から Tips まで
Yuki Tanabe
Java web application testing
Java web application testing
Tokuhiro Matsuno
Lt 20150711
Lt 20150711
Tomoyuki Obi
Griffon10 in groovy_fx
Griffon10 in groovy_fx
kimukou_26 Kimukou
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Tatsuyoshi Mashiko
Selenium2(web driver) ide編
Selenium2(web driver) ide編
Tetsuya Hasegawa
20191003 classi night-04
20191003 classi night-04
Akihiko Kigure
Was ist angesagt?
(20)
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
【Camphor ×サイボウズ】selenium勉強会
【Camphor ×サイボウズ】selenium勉強会
milkcocoa入門@milkcocoa meetup#1
milkcocoa入門@milkcocoa meetup#1
Java + React.jsでSever Side Rendering #reactjs_meetup
Java + React.jsでSever Side Rendering #reactjs_meetup
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Java Day Tokyo 2013 Java the Night 監視ツールでみるJavaFXとJava EEの魅力
Jsug spring bootコードリーディング 接触篇 a contact
Jsug spring bootコードリーディング 接触篇 a contact
OpenShift のある生活
OpenShift のある生活
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
behatエクステンションの作り方
behatエクステンションの作り方
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
第80回 PHP勉強会 / laravel.jp & Laravel Meetup Tokyo Vol.5
Swift入門
Swift入門
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
Grails 3.0先取り!? Spring Boot入門ハンズオン #jggug_boot
iOS 8 Widget ~ 導入から Tips まで
iOS 8 Widget ~ 導入から Tips まで
Java web application testing
Java web application testing
Lt 20150711
Lt 20150711
Griffon10 in groovy_fx
Griffon10 in groovy_fx
<第1回>Laravelハンズオンセミナー
<第1回>Laravelハンズオンセミナー
Selenium2(web driver) ide編
Selenium2(web driver) ide編
20191003 classi night-04
20191003 classi night-04
Ähnlich wie Swift Protocol and Selector
Can we live in a pure Swift world?
Can we live in a pure Swift world?
toyship
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
Study Group by SciencePark Corp.
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
Daiki Maekawa
SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発!
Koji Shiraishi
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
Takuma Morikawa
WWDC 2016の概観
WWDC 2016の概観
Yuta Hoshino
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
Syo Ikeda
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
Masanori Ishigami
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Tomoki Oyamatsu
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
スッとGoを取り入れる
スッとGoを取り入れる
Yusuke Wada
Swaggerのさわりだけ
Swaggerのさわりだけ
Masakazu Muraoka
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
Yahoo!デベロッパーネットワーク
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
Yusuke Wada
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
Issei Hiraoka
Driverについて
Driverについて
幸雄 村上
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
健一 辰濱
HTML5でOpen Dataをやってみた
HTML5でOpen Dataをやってみた
Masakazu Muraoka
Mozapps installがなくなったことへの不平不満
Mozapps installがなくなったことへの不平不満
Masakazu Muraoka
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Saki Homma
Ähnlich wie Swift Protocol and Selector
(20)
Can we live in a pure Swift world?
Can we live in a pure Swift world?
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
ROS JAPAN Users Group Meetup 03
ROS JAPAN Users Group Meetup 03
SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発!
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
pairsでのAngularJS x TypeScript x e2e @めぐすた#1
WWDC 2016の概観
WWDC 2016の概観
iOSでのFramework導入のおさらい #関モバ
iOSでのFramework導入のおさらい #関モバ
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[使い倒し]GitHubのIssueとTFS/VSOのWorkItem連動に挑む(2015/08/26)
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
スッとGoを取り入れる
スッとGoを取り入れる
Swaggerのさわりだけ
Swaggerのさわりだけ
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
Mojoliciousでつくる! Webアプリ入門
Mojoliciousでつくる! Webアプリ入門
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
2020/06/16 tsjp-azure-staticwebapps-vs_codespaces
Driverについて
Driverについて
Device Farm を使ったスマホアプリの自動テスト
Device Farm を使ったスマホアプリの自動テスト
HTML5でOpen Dataをやってみた
HTML5でOpen Dataをやってみた
Mozapps installがなくなったことへの不平不満
Mozapps installがなくなったことへの不平不満
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Visual Studio Codeを使い倒そう! ~プログラミングから機械学習、クラウド連携、遠隔ペアプロまで~
Mehr von toyship
Time for Xcode Behavior
Time for Xcode Behavior
toyship
Notifications in iOS10
Notifications in iOS10
toyship
Universal Link
Universal Link
toyship
What's new Swift3
What's new Swift3
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
(12)
Time for Xcode Behavior
Time for Xcode Behavior
Notifications in iOS10
Notifications in iOS10
Universal Link
Universal Link
What's new Swift3
What's new Swift3
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とロケール
Kürzlich hochgeladen
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Kürzlich hochgeladen
(10)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Swift Protocol and Selector
1.
Swi$%Protocol%and%Selector 2016/02/06 @TachibanaKaoru
2.
自己紹介 渋谷のVOYAGE'GROUPでiOSエンジニア をしています。 Twi$er:(@TachibanaKaoru Blog(:(h$p://www.toyship.org/ 朝時間jpというアプリをだしてます。
3.
try!%Swi) • h#p://tryswi-conf.com/ • 2016/3/293/4 •
VOYAGEAGROUPはtry!ASwi-のスポンサーをしています。
4.
iOS$Developers$Conference$2016 *"h$ps://iosdc.jp *"2016/08/20 *"@iosdcjp
5.
Swi$%Protocol%Extension Swi$%2.0から導入された機能。いままでインターフェース定義と してしか使えなかったProtocolの実装部分も共通化できるように なりました。
6.
デバッグ出力を共通化してみる例 • こんなデバッグ出力用のプロトコルを作ったとします。 protocol DebugLog
{ func writeDebugMessage() -> Void }
7.
デバッグ出力を共通化してみる例 • Swi%1.0ではこのプロトコルに適合しているクラスで実装を書 く必要がありました。 class ElmViewController
: UIViewController, DebugLog { override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) writeDebugMessage() } func writeDebugMessage() -> Void{ print("デバッグ出力の実装をここでする") } }
8.
デバッグ出力を共通化してみる例 • Swi%&2.0では、プロトコル側にデフォルトの実装をかくことが できます。 protocol DebugLog
{ func writeDebugMessage() -> Void } extension DebugLog { func writeDebugMessage() -> Void{ print("Protocol extensionで共通化されたデバッグ出力です。") } }
9.
デバッグ出力を共通化してみる例 • Swi%2.0ではこのプロトコルに適合すれば実装を書く必要がな くなりました。 class ElmViewController
: UIViewController, DebugLog { override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) writeDebugMessage() } // 書かなくていい // func writeDebugMessage() -> Void{ // print("デバッグ出力の実装をここでする") // } }
10.
デバッグ出力を共通化してみる例 • では、もし、Swi%2.0で処理が共通化されているプロトコルに ついて、自分のクラスで実装を書いたらどうなるでしょうか。 • 自分のクラスの実装コードが実行されます class
ElmViewController : UIViewController, DebugLog { override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) writeDebugMessage() } func writeDebugMessage() -> Void{ print("デバッグ出力の実装をここでする") } }
11.
Swi$%2.0%Protocol%Extension • プロトコル側に共通実装をもたせることで、実装を共通化でき るが、上書きすることでクラスごとの独自処理にすることもで きる
12.
Swi$%2.0%Protocol%Extension • protocolを適合しているクラスによって実装を変更したりも可 能 protocol DebugLog
{ func writeDebugMessage() -> Void } extension DebugLog { func writeDebugMessage() -> Void{ print("Protocol extensionで共通化されたデバッグ出力です。") } } extension DebugLog where Self : UIViewController{ func writeDebugMessage() -> Void{ print("Protocol extensionで共通化されたデバッグ出力です。(ただし、selfがUIViewControllerです)") } }
13.
プロトコルで実装したものをSelectorとしてよんでみる • 下記のように、自分で実装しているProtocolをselectorでよびだ す。>実行される class ElmViewController
: UIViewController, DebugLog { override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) performSelector("writeDebugMessage") } func writeDebugMessage() -> Void{ print("デバッグ出力の実装をここでする") } }
14.
プロトコルで実装したものをSelectorとしてよんでみる • 下記のように、2.0のProtocol+extensionをselectorでよびだして みましょう class ElmViewController
: UIViewController, DebugLog { override func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) performSelector("writeDebugMessage") } }
15.
プロトコルで実装したものをSelectorとしてよんでみる • 下記のように、2.0のProtocol+extensionをselectorでよびだす。 • 実行時エラーとなります [Forest.ElmViewController
writeDebugMessage]: unrecognized selector sent to instance
16.
Protocol'Extensionで実装したメソッドは Selectorとして指定することができない
17.
• Apple&Developer&Forumでもまったく同じ話題がでていました。 • Func0on&in&Swi4&2&protocol&extension&returns&unrecognized& selector&when&using&a&UIGestureRecognizer&to&call&it. •
hCps://forums.developer.apple.com/thread/16773
18.
Selectorで指定できないとなにが困るのか。 例えば、UIBu%onのAc*onや、NSTimerやGestureのAc*onなど、 UIKitの主要機能のAc*onの指定をすることができない。
Jetzt herunterladen