Submit Search
Upload
How to improve Type-safety in your Objective-C code
•
2 likes
•
1,016 views
C
Chiharu Nameki
Follow
Shibuya.swift #1 LT
Read less
Read more
Technology
Report
Share
Report
Share
1 of 13
Download now
Download to read offline
Recommended
Nullabilityについて
Nullabilityについて
ishikawa akira
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
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
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
Objective-C Generics LT version
Objective-C Generics LT version
Goichi Hirakawa
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
SwiftでObjective-Cコードに立ち向かう
SwiftでObjective-Cコードに立ち向かう
Toshihiro Suzuki
Recommended
Nullabilityについて
Nullabilityについて
ishikawa akira
Mix and Match / Swift and Objective-C
Mix and Match / Swift and Objective-C
Goichi Hirakawa
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
Objective-Cプログラマのためのswift導入法
Objective-Cプログラマのためのswift導入法
Tomoki Hasegawa
Objective-C Generics LT version
Objective-C Generics LT version
Goichi Hirakawa
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
SwiftでObjective-Cコードに立ち向かう
SwiftでObjective-Cコードに立ち向かう
Toshihiro Suzuki
これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門
Hiramatsu Ryosuke
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
Hiroyuki Mori
watchOS2 tips
watchOS2 tips
Motoki Narita
Obj-CをSwiftにリプレースするお話
Obj-CをSwiftにリプレースするお話
Hitoshi Saito
ReactNativeを語る勉強会
ReactNativeを語る勉強会
yohei sugigami
Rubymotionはオススメか?
Rubymotionはオススメか?
Junya Ishihara
Realm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみて
Daisuke Nagata
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門
Hisakuni Fujimoto
LT発表資料
LT発表資料
murajun1978
TypeScript による今風の web アプリ開発
TypeScript による今風の web アプリ開発
靖 陣内
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
Narami Kiyokura
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
Yasushi Kato
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
Hiramatsu Ryosuke
de:code報告
de:code報告
Kouji Matsui
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Roy Kim
Editorlt
Editorlt
Masaki Suzuki
Swift入門
Swift入門
聡 中川
Swiftビギナーズ勉強会 第1回 @Co-Edo
Swiftビギナーズ勉強会 第1回 @Co-Edo
Megumi Otani(Czenhe)
Objective-C/Swift コードの共用
Objective-C/Swift コードの共用
Yoichiro Sakurai
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
Tomoya Hayakawa
More Related Content
What's hot
これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門
Hiramatsu Ryosuke
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
Hiroyuki Mori
watchOS2 tips
watchOS2 tips
Motoki Narita
Obj-CをSwiftにリプレースするお話
Obj-CをSwiftにリプレースするお話
Hitoshi Saito
ReactNativeを語る勉強会
ReactNativeを語る勉強会
yohei sugigami
Rubymotionはオススメか?
Rubymotionはオススメか?
Junya Ishihara
Realm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみて
Daisuke Nagata
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Shingo Sato
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Kouji Matsui
Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門
Hisakuni Fujimoto
LT発表資料
LT発表資料
murajun1978
TypeScript による今風の web アプリ開発
TypeScript による今風の web アプリ開発
靖 陣内
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
Narami Kiyokura
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
Yasushi Kato
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
Hiramatsu Ryosuke
de:code報告
de:code報告
Kouji Matsui
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Roy Kim
Editorlt
Editorlt
Masaki Suzuki
Swift入門
Swift入門
聡 中川
Swiftビギナーズ勉強会 第1回 @Co-Edo
Swiftビギナーズ勉強会 第1回 @Co-Edo
Megumi Otani(Czenhe)
What's hot
(20)
これからはじめる SwiftPlayground入門
これからはじめる SwiftPlayground入門
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
.NET Core 3.0 で見る Client Apps #BuriKaigi #BuriKaigi2019
watchOS2 tips
watchOS2 tips
Obj-CをSwiftにリプレースするお話
Obj-CをSwiftにリプレースするお話
ReactNativeを語る勉強会
ReactNativeを語る勉強会
Rubymotionはオススメか?
Rubymotionはオススメか?
Realm,rx swift,repro を使ってみて
Realm,rx swift,repro を使ってみて
Swiftでの関数型プログラミングについて考えていること
Swiftでの関数型プログラミングについて考えていること
Win32 APIをてなずけよう
Win32 APIをてなずけよう
Swiftによる関数型プログラミング超入門
Swiftによる関数型プログラミング超入門
LT発表資料
LT発表資料
TypeScript による今風の web アプリ開発
TypeScript による今風の web アプリ開発
軽量ASP.NETフレームワークNancy
軽量ASP.NETフレームワークNancy
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
de:code報告
de:code報告
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Swiftで説明する「モナド」:Swiftにおける関数型プログラミングの使い方
Editorlt
Editorlt
Swift入門
Swift入門
Swiftビギナーズ勉強会 第1回 @Co-Edo
Swiftビギナーズ勉強会 第1回 @Co-Edo
Similar to How to improve Type-safety in your Objective-C code
Objective-C/Swift コードの共用
Objective-C/Swift コードの共用
Yoichiro Sakurai
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
Tomoya Hayakawa
HOME'Sアプリ Swift化
HOME'Sアプリ Swift化
LIFULL Co., Ltd.
XcodeのTargetについてのTIPS
XcodeのTargetについてのTIPS
Yoichiro Sakurai
Macアプリのインストーラ作成ツールSwift版
Macアプリのインストーラ作成ツールSwift版
Akira Hayashi
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
codeal
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
Tomoki Hasegawa
Inside of swift
Inside of swift
LINE Corporation
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
幸雄 村上
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Takashi Sogabe
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Yuichiro Saito
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
apuruni
Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語
Yossy Taka
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話
akatsuki174
Office365 api dev_20140624
Office365 api dev_20140624
Seiji Noro
React NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみよう
dcubeio
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
Yoshito Tabuchi
モバイル開発者から見た サーバーレスアーキテクチャ
モバイル開発者から見た サーバーレスアーキテクチャ
Takaaki Tanaka
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
聡 中川
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Mori Shingo
Similar to How to improve Type-safety in your Objective-C code
(20)
Objective-C/Swift コードの共用
Objective-C/Swift コードの共用
iOS開発でのおすすめライブラリと管理
iOS開発でのおすすめライブラリと管理
HOME'Sアプリ Swift化
HOME'Sアプリ Swift化
XcodeのTargetについてのTIPS
XcodeのTargetについてのTIPS
Macアプリのインストーラ作成ツールSwift版
Macアプリのインストーラ作成ツールSwift版
第1回 コデアルiOSアプリ勉強会
第1回 コデアルiOSアプリ勉強会
Swift事情2014夏 ~ Swift入門 beta6対応
Swift事情2014夏 ~ Swift入門 beta6対応
Inside of swift
Inside of swift
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
RFC Viewer開発を通して学ぶ!! iOS開発のパターン化
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
アプリケーションエンジニアのためのクラウドインフラ再入門 (2/3)
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
Microsoft DevOps Hackathon (Sep 2015) Team 4 Presentation
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
既存Objective-CプロジェクトをSwiftに移行した時ハマったこと
Webの仕組みとプログラミング言語
Webの仕組みとプログラミング言語
既存プロジェクトにSwiftLintを導入した話
既存プロジェクトにSwiftLintを導入した話
Office365 api dev_20140624
Office365 api dev_20140624
React NativeでTwitterクライアントを作ってみよう
React NativeでTwitterクライアントを作ってみよう
Xamarin 概要 2014年08月版
Xamarin 概要 2014年08月版
モバイル開発者から見た サーバーレスアーキテクチャ
モバイル開発者から見た サーバーレスアーキテクチャ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
Recently uploaded
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Recently uploaded
(12)
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
How to improve Type-safety in your Objective-C code
1.
How to improve
Type-safety in your Objective-C code ∼ Swiftから安心して使えるObjective-Cの書き方 ∼ 2015.10.21 Shibuya.swift #1 LT
2.
自己紹介 • 行木 千春(なめき
ちはる) • iOS, OS X, Audio Processing • Twitter, GitHub: @Ridwy • CyberAgent, Inc. • Amebaアプリ作ってます
3.
新規アプリを作るならObjective-CよりSwift Objective-Cの利用シーン • 既存Objective-CのプロジェクトをSwiftに書き換える • Objective-Cにしかない機能を利用する Method
Swizzling method_exchangeImplementations() • C++のコードを(Swiftから直接使えないので)ラッピングする • 諸事情でライブラリの実装を隠 したい • Swift未サポートの環境に向けた開発
4.
SwiftとObjective-Cの大きな違い • Type-safe, 厳格な型チェック •
Optional Type-safe Swift foo as! ASubclass ❌ Objective-C (ASubclass *)foo; 可 • 型の扱いはプログラマに委ねられ るところが大きい • nilになる場合を考慮しながら書く
5.
SwiftからObjective-Cを使うと 結合部分に注意が必要 Swift Objective-C Type-safe Type-unsafe !? 想定しない型が来る可能性
6.
よくあるバグ ! がついたプロパティの値がnil Unwrapping失敗! Swift Objective-C Objective-CのヘッダをSwiftに変換すると デフォルトで変数は implicitly
unwrapped optional 型
7.
使いにくいインターフェース これを使おうとすると… Objective-C Swiftでは型を明確に しなければならない 変換が入っていまいち Swift
8.
Appleからの解決方法! Objective-Cにアノーテーションをつける _Nullable & _Nonnull •
ポインタの後ろに付ける • nilになるものには_Nullable • そうでないものは _Nonnull • ポインタのポインタには都度付ける
9.
プロパティとメソッドについては以下の書き方もできる Nullability修飾子 Swift nullable NSDate? nonnull
NSDictionary null_resettable NSArray! ※ ヘッダファイルに1箇所指定すると、同じファイル内のすべての 場所に指定が必要になる ※ NS_ASSUME_NONNULL_BEGIN と NS_ASSUME_NONNULL_END で囲むと省略可能 (nonnullになる)
10.
Collectionの要素の型も記述できる Objective-C Swift NSArray<NSString *>
[String] NSDictionary<NSString *, NSData *> [String : NSData] 😃
11.
• Swift側でアクセスしようとした時にクラッシュ! doesNotRecognizeSelector: • Objective-C側を直すしかない 頑張りましょう アクセスしなくても スコープを抜ける時にクラッシュしていた 参考:Swift
1時代 Swift 2.0で改善された模様 例えばObjective-Cが本来と違う型を返してきたら... 実装はObjective-C側に委ねられる⚠
12.
• Swiftから利用する時の安全性・便利性が上がった • Objective-Cのヘッダとしても分かりやすくなった •
nilになることを想定しているかどうかが一目でわかる • コレクションが保持する型も一目でわかる これまではドキュメントに書くしかなかった…。 • Objective-Cを知らない人からもコメントをもらえた! アノーテーションをヘッダにしっかり記述したら… これからのObjective-Cには極力書いていくと良さそう 保証は自前なので返す型には気をつけよう
13.
ご静聴ありがとうございました
Download now