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
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
Recently uploaded
(12)
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
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