Submit Search
Upload
Objective-C Generics LT version
•
0 likes
•
648 views
Goichi Hirakawa
Follow
potatotips (iOS/Android開発Tips共有会) 第22回 Objective-C Generics LT版
Read less
Read more
Software
Report
Share
Report
Share
1 of 15
Download now
Download to read offline
Recommended
New Objective-C Features for Swift 2.0
New Objective-C Features for Swift 2.0
Goichi Hirakawa
Objective-C Generics
Objective-C Generics
Goichi Hirakawa
watchOS2 tips
watchOS2 tips
Motoki Narita
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
Hiroyuki Mori
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
How to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C code
Chiharu Nameki
ng build --prod & Continuous Delivery
ng build --prod & Continuous Delivery
bitbank, Inc. Tokyo, Japan
Recommended
New Objective-C Features for Swift 2.0
New Objective-C Features for Swift 2.0
Goichi Hirakawa
Objective-C Generics
Objective-C Generics
Goichi Hirakawa
watchOS2 tips
watchOS2 tips
Motoki Narita
Xcode7時代のアプリ配布
Xcode7時代のアプリ配布
toyship
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
Hiroyuki Mori
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
How to improve Type-safety in your Objective-C code
How to improve Type-safety in your Objective-C code
Chiharu Nameki
ng build --prod & Continuous Delivery
ng build --prod & Continuous Delivery
bitbank, Inc. Tokyo, Japan
改めて C# でできることを振り返る
改めて C# でできることを振り返る
Yuta Matsumura
.NET Conf の歩き方
.NET Conf の歩き方
Yuta Matsumura
Microsoft learnご紹介vol2
Microsoft learnご紹介vol2
ru pic
Dotnetcore30forwindesktop
Dotnetcore30forwindesktop
ru pic
202202 open telemetry .net handson
202202 open telemetry .net handson
Takayoshi Tanaka
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tye
Yuta Matsumura
C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)
Takayoshi Tanaka
Editorlt
Editorlt
Masaki Suzuki
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
Seunghun Lee
Blazor Server テンプレート解説
Blazor Server テンプレート解説
Yuta Matsumura
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
Akira Inoue
Vscodemeetup6
Vscodemeetup6
Masaki Suzuki
20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発
Takayoshi Tanaka
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
Akira Inoue
最近のQ#について
最近のQ#について
Takayoshi Tanaka
Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!
Hiroyuki Mori
AngularJSとFluxとRiotJSと
AngularJSとFluxとRiotJSと
Ryo Iinuma
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
CData Software Japan
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
アプリ開発&チーム管理で役立った拡張機能
アプリ開発&チーム管理で役立った拡張機能
Masaki Suzuki
Seminer20110119
Seminer20110119
Yoshi Sakai
Surface RT活用研究(.NETラボ勉強会 2013/5/25)
Surface RT活用研究(.NETラボ勉強会 2013/5/25)
Tomokazu Kizawa
More Related Content
What's hot
改めて C# でできることを振り返る
改めて C# でできることを振り返る
Yuta Matsumura
.NET Conf の歩き方
.NET Conf の歩き方
Yuta Matsumura
Microsoft learnご紹介vol2
Microsoft learnご紹介vol2
ru pic
Dotnetcore30forwindesktop
Dotnetcore30forwindesktop
ru pic
202202 open telemetry .net handson
202202 open telemetry .net handson
Takayoshi Tanaka
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tye
Yuta Matsumura
C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)
Takayoshi Tanaka
Editorlt
Editorlt
Masaki Suzuki
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
Seunghun Lee
Blazor Server テンプレート解説
Blazor Server テンプレート解説
Yuta Matsumura
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
Akira Inoue
Vscodemeetup6
Vscodemeetup6
Masaki Suzuki
20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発
Takayoshi Tanaka
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
Akira Inoue
最近のQ#について
最近のQ#について
Takayoshi Tanaka
Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!
Hiroyuki Mori
AngularJSとFluxとRiotJSと
AngularJSとFluxとRiotJSと
Ryo Iinuma
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
CData Software Japan
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
Yuta Matsumura
アプリ開発&チーム管理で役立った拡張機能
アプリ開発&チーム管理で役立った拡張機能
Masaki Suzuki
What's hot
(20)
改めて C# でできることを振り返る
改めて C# でできることを振り返る
.NET Conf の歩き方
.NET Conf の歩き方
Microsoft learnご紹介vol2
Microsoft learnご紹介vol2
Dotnetcore30forwindesktop
Dotnetcore30forwindesktop
202202 open telemetry .net handson
202202 open telemetry .net handson
マイクロサービス開発が捗る Project Tye
マイクロサービス開発が捗る Project Tye
C#エンジニアのためのdocker kubernetesハンズオン (再)
C#エンジニアのためのdocker kubernetesハンズオン (再)
Editorlt
Editorlt
ionic - cross platform mobile app 開発
ionic - cross platform mobile app 開発
Blazor Server テンプレート解説
Blazor Server テンプレート解説
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
~ Build と言えば やっぱり Developer! ~ Microsoft 開発ツール最新アップデート
Vscodemeetup6
Vscodemeetup6
20160702 linuxでもできるc#でアプリ開発
20160702 linuxでもできるc#でアプリ開発
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
最近のQ#について
最近のQ#について
Visual Studio 2019 Updates Pickup!
Visual Studio 2019 Updates Pickup!
AngularJSとFluxとRiotJSと
AngularJSとFluxとRiotJSと
マルチクラウドデータ連携Javaアプリケーションの作り方
マルチクラウドデータ連携Javaアプリケーションの作り方
The Twelve-Factor (A|M)pp with C#
The Twelve-Factor (A|M)pp with C#
アプリ開発&チーム管理で役立った拡張機能
アプリ開発&チーム管理で役立った拡張機能
Viewers also liked
Seminer20110119
Seminer20110119
Yoshi Sakai
Surface RT活用研究(.NETラボ勉強会 2013/5/25)
Surface RT活用研究(.NETラボ勉強会 2013/5/25)
Tomokazu Kizawa
20140904 国際フロンティア産業メッセ2014
20140904 国際フロンティア産業メッセ2014
Midori Ikegami
Xamarin.iOS
Xamarin.iOS
Kosuke Usami
iOSアプリ制作のためのObjective-C入門
iOSアプリ制作のためのObjective-C入門
聡 中川
Swiftビギナーズ勉強会 第一回@Co-Edo
Swiftビギナーズ勉強会 第一回@Co-Edo
Kanako Kobayashi
2013_1Q_GMOCLOUD
2013_1Q_GMOCLOUD
ir_gmocloud
mixiスマートフォン戦略
mixiスマートフォン戦略
mixiPR
151111 fy2015 2_q
151111 fy2015 2_q
bm_pr
20150417デザイン勉強会33
20150417デザイン勉強会33
Takashi Kitamura
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
apuruni
Objective-C/Swift コードの共用
Objective-C/Swift コードの共用
Yoichiro Sakurai
iOSエンジニアの最近 株式会社マネーフォワード
iOSエンジニアの最近 株式会社マネーフォワード
Yuki Asai
SwiftでObjective-Cコードに立ち向かう
SwiftでObjective-Cコードに立ち向かう
Toshihiro Suzuki
Swift入門おさらい
Swift入門おさらい
GMO TECH 株式会社
Swiftおさらい
Swiftおさらい
Hidenori Takeshita
はじめましてnanapiのデザイナー木村と申します LT@Cross 2015
はじめましてnanapiのデザイナー木村と申します LT@Cross 2015
Mari Kimura
Define and expansion of cpp macro
Define and expansion of cpp macro
digitalghost
4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおした
Hiromichi Yamada
Objective-C のアレはどこいったの?(Swift の話し
Objective-C のアレはどこいったの?(Swift の話し
Iwama Ryo
Viewers also liked
(20)
Seminer20110119
Seminer20110119
Surface RT活用研究(.NETラボ勉強会 2013/5/25)
Surface RT活用研究(.NETラボ勉強会 2013/5/25)
20140904 国際フロンティア産業メッセ2014
20140904 国際フロンティア産業メッセ2014
Xamarin.iOS
Xamarin.iOS
iOSアプリ制作のためのObjective-C入門
iOSアプリ制作のためのObjective-C入門
Swiftビギナーズ勉強会 第一回@Co-Edo
Swiftビギナーズ勉強会 第一回@Co-Edo
2013_1Q_GMOCLOUD
2013_1Q_GMOCLOUD
mixiスマートフォン戦略
mixiスマートフォン戦略
151111 fy2015 2_q
151111 fy2015 2_q
20150417デザイン勉強会33
20150417デザイン勉強会33
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
Objective-C/Swift コードの共用
Objective-C/Swift コードの共用
iOSエンジニアの最近 株式会社マネーフォワード
iOSエンジニアの最近 株式会社マネーフォワード
SwiftでObjective-Cコードに立ち向かう
SwiftでObjective-Cコードに立ち向かう
Swift入門おさらい
Swift入門おさらい
Swiftおさらい
Swiftおさらい
はじめましてnanapiのデザイナー木村と申します LT@Cross 2015
はじめましてnanapiのデザイナー木村と申します LT@Cross 2015
Define and expansion of cpp macro
Define and expansion of cpp macro
4年前のカメラアプリをSwiftで書きなおした
4年前のカメラアプリをSwiftで書きなおした
Objective-C のアレはどこいったの?(Swift の話し
Objective-C のアレはどこいったの?(Swift の話し
Similar to Objective-C Generics LT version
NET 6で実装された新しいLINQ API
NET 6で実装された新しいLINQ API
TomomitsuKusaba
XcodeのTargetについてのTIPS
XcodeのTargetについてのTIPS
Yoichiro Sakurai
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
0831 node学園lt
0831 node学園lt
Kazuya Fukumoto
Visual Studio 2017 RC C# まわり
Visual Studio 2017 RC C# まわり
miso- soup3
Vs code conf2020-11-21-extensions-for-microservices-app-dev
Vs code conf2020-11-21-extensions-for-microservices-app-dev
Shotaro Suzuki
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
日本マイクロソフト株式会社
LightSwitch 結局何ができるの
LightSwitch 結局何ができるの
Yoshitaka Seo
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
慎一 古賀
【BS12】Visual Studio 2022 40分一本勝負!
【BS12】Visual Studio 2022 40分一本勝負!
日本マイクロソフト株式会社
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
codeal
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そう
Mitsuhito Ishino
SCM, CI and Maven Repo
SCM, CI and Maven Repo
Hideaki Ishijima
新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ
慎一 古賀
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
インフラジスティックス・ジャパン株式会社
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Akira Inoue
20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward
Naoki Shimizu
Intalio japan special cloud workshop
Intalio japan special cloud workshop
Daisuke Sugai
Similar to Objective-C Generics LT version
(20)
NET 6で実装された新しいLINQ API
NET 6で実装された新しいLINQ API
XcodeのTargetについてのTIPS
XcodeのTargetについてのTIPS
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
0831 node学園lt
0831 node学園lt
Visual Studio 2017 RC C# まわり
Visual Studio 2017 RC C# まわり
Vs code conf2020-11-21-extensions-for-microservices-app-dev
Vs code conf2020-11-21-extensions-for-microservices-app-dev
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
【BS13】チーム開発がこんなにも快適に!コーディングもデバッグも GitHub 上で。 GitHub Codespaces で叶えられるシームレスな開発
LightSwitch 結局何ができるの
LightSwitch 結局何ができるの
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
運用管理者のための「開発者からみたDevOps」 - Visual Studio 2015 新機能から考える開発者の取り組み
【BS12】Visual Studio 2022 40分一本勝負!
【BS12】Visual Studio 2022 40分一本勝負!
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
オレたちとVisual Studioとの関係を話そう
オレたちとVisual Studioとの関係を話そう
SCM, CI and Maven Repo
SCM, CI and Maven Repo
新しい Visual Studio & .NET と新時代のアーキテクチャ
新しい Visual Studio & .NET と新時代のアーキテクチャ
Ignite UI 2012 最新情報 jQuery Mobile 編
Ignite UI 2012 最新情報 jQuery Mobile 編
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
Visual Studio 2012 と ASP.NET に見る、最新 Web 開発の魅力
20150421 Geeks Night @ Money Foward
20150421 Geeks Night @ Money Foward
Intalio japan special cloud workshop
Intalio japan special cloud workshop
More from Goichi Hirakawa
Strings and characters in swift
Strings and characters in swift
Goichi Hirakawa
WebKit Overview
WebKit Overview
Goichi Hirakawa
Server-side Swift
Server-side Swift
Goichi Hirakawa
Swift Type System
Swift Type System
Goichi Hirakawa
Swift API Design Guidelines (dec 3, 2015)
Swift API Design Guidelines (dec 3, 2015)
Goichi Hirakawa
Strings and Characters in Swift
Strings and Characters in Swift
Goichi Hirakawa
More from Goichi Hirakawa
(6)
Strings and characters in swift
Strings and characters in swift
WebKit Overview
WebKit Overview
Server-side Swift
Server-side Swift
Swift Type System
Swift Type System
Swift API Design Guidelines (dec 3, 2015)
Swift API Design Guidelines (dec 3, 2015)
Strings and Characters in Swift
Strings and Characters in Swift
Objective-C Generics LT version
1.
Objective-C Generics Goichi Hirakawa
2.
About Me • 平川
剛一 (Goichi Hirakawa) • @gooichi • OS X / iOSソフトウェアエンジニア(フリー) • GyazSquare / GitHub • Mailer、デバイス制御、MDM系など • Objective-C歴XX年 • 初めて触れたのはNextStep…
3.
New Objective-C Features Objective-CとSwiftをより簡単で効率的に連携させ るためのXcode
7からの新機能: • Generics • Nullability (Updated) • KindOf Types • New macros for Swift
4.
New Objective-C Features Objective-CとSwiftをより簡単で効率的に連携させ るためのXcode
7からの新機能: • Generics • Nullability (Updated) • KindOf Types • New macros for Swift
5.
New Objective-C Features Objective-CとSwiftをより簡単で効率的に連携させ るためのXcode
7からの新機能: • Generics (一部) • Nullability (Updated) • KindOf Types • New macros for Swift
6.
Agenda • What s
Generics? • Objective-C Generics • Backward Compatibility • Generic Classes (iOS 9) • Variances • KindOf Types
7.
Agenda • What s
Generics? • Objective-C Generics • Backward Compatibility • Generic Classes (iOS 9) • Variances • KindOf Types
8.
What s Generics? •
型に依存しない共通の処理やアルゴリズムを型パラメータ (Type Parameter)を用いて定義し、汎用化する機能 • ジェネリックプログラミングの仕組み • 言語により呼び名、機能は若干異なる • テンプレート(C++)、ジェネリクス(Java、Swiftな ど)、ジェネリック(MS系言語)、パラメータ化され た型(Scala)等々
9.
Objective-C Generics • 他言語と比べ、Lightweight(軽量、簡易) •
APIの表現力を向上させる • コレクションをより使いやすくする • Swiftにより型情報がインポート • より良い静的型チェックを可能にする • Xcode 7(LLVM 7.0.0)以降
10.
Before Using Generics Objective-C @interface
UIView @property (nonatomic, copy ,readonly) NSArray *subviews; @end Swift class UIView { var subviews: [AnyObject] { get } }
11.
After Using Generics Objective-C @interface
UIView @property (nonatomic,readonly,copy) NSArray<UIView *>*subviews; @end Swift class UIView { var subviews: [UIView] { get } }
12.
Static Type Checking •
型に関する警告が表示される • ただし、以下は警告は出ない→正しい(後方互換性参照)
13.
Backward Compatibility • 型消去(Type
Erasure)モデルでバイナリ互換 • Objective-Cランタイムに変更なし • コード生成に影響なし • 暗黙の変換によるソース互換性 NSArray<NSString *> *strings = ...; NSArray *array = ...; array = strings; // OK, 型引数が削除 strings = array; // OK, 型引数が追加
14.
Generic Classes (iOS
9) • NSArray、NSSetとNSDictionary • これらの型情報はSwiftによりインポートされる • それ以外のジェネリクス対応クラス • NSCache、NSEnumerator、NSHashTable、 NSMapTable、NSOrderedSet、PHFetchResult、 および、これらのMutableクラスもジェネリクス対応 • これらの型情報はSwiftによりインポートされない
15.
Conclusion • Objective-Cジェネリクスは、機能的にはLightweightであるが、 以下の理由より既存コードに適用する価値はある: • 静的型チェック •
Swiftの型情報インポート • バイナリ互換 • KindOf型はObjective-Cジェネリクスとの組み合わせだけでなく、 既存コードのid型との置き換えでも利用可能 • id型よりも型安全になり、Swiftからも使いやすくなる
Download now