際際滷
Submit Search
皆敬庄韓岳3と或恢逮艶界岳庄厩艶-遺のブリッジでハマったこと
?
Download as PPTX, PDF
?
1 like
?
1,588 views
唸初 互
Follow
鹿まれSwift挫きSwift杠短 Vol12の坪否です。
Read less
Read more
1 of 16
Download now
Download to read offline
More Related Content
皆敬庄韓岳3と或恢逮艶界岳庄厩艶-遺のブリッジでハマったこと
1.
Swift3とObjective-Cのブ リッジでハマったこと @yousan 鹿まれSwift挫きSwift杠短 Vol12
2.
徭失B初 ? @yousan ? iOSアプリエンジニア ?
箸龍 テニス
3.
Swift3卞佩嶄 Objective-Cでクラッシュ
4.
let person =
Person(nickname: "yousan") let uppercaseNickname = ObjCUtils.convert(toUppercase: person.nickname) print(uppercaseNickname) @implementation ObjCUtils + (nonnull id)convertToUppercase:(nonnull id)string { return [string uppercaseString]; } @end Swift Objective-C
5.
Terminating app due
to uncaught exception 'NSInvalidArgumentException
6.
let person =
Person(nickname: "yousan") let uppercaseNickname = ObjCUtils.convert(toUppercase: person.nickname) print(uppercaseNickname) @implementation ObjCUtils + (nonnull id)convertToUppercase:(nonnull id)string { return [string uppercaseString]; } @end Swift Objective-C struct Person { let nickname: String? } オプショナルでした Swift2のときはAnyObjectだったので コンパイルrにエラ`になっていた
7.
id ★ Anyの廣吭 +
(nonnull id)convertToUppercase:(nonnull id)string; class func convert(toUppercase string: Any) -> Any class func convertToUppercase(string: AnyObject) -> AnyObject Swift2 Swift3 オプショナルは哈方に局せない オプショナルも哈方に局せる Objective-C nonnullでもコンパイルエラ`にならない
8.
idである駅勣がなければ侏を峺協 + (nonnull NSString
*)convertToUppercase:(nonnull NSString *)string; class func convert(toUppercase string: String) -> String Objective-C Swift3 NSArray, NSDictionary, NSSetはジェネリクスを峺協 + (nonnull NSArray<NSString *>)convertToUppercase:(nonnull NSArray<NSString *>)strings; class func convert(toUppercase strings: [String]) -> [String] Objective-C Swift3 翌何ライブラリは櫃鬚弔韻襪靴ない
9.
なぜこんな個笋鬘
10.
? SE-0116 https://github.com/apple/swift-evolution/blob/master/proposals/0116-id-as-any.md ? Objective-C
id as Swift Any - Swift Blog https://developer.apple.com/swift/blog/?id=39 ? 5蛍でわかるSE-0116(id-as-any) // Speaker Deck https://speakerdeck.com/takasek/5fen-dewakaruse-0116-id-as-any
11.
Swift2 // StringがAnyObjectに圧a議にQされている let converted
= ObjCUtils.convertToUppercase("yousan") きやすいように圧a議にAnyObjectにQしている 云栖vSのない侏に、しかも圧a議にQされるのは 弼?な}を伏むのではないか
12.
Swift3 let name: AnyObject
= "yousan" as AnyObject // AnyObjectへのQを苧幣 let converted = ObjCUtils.convert(toUppercase: name) let uppercaseNickname: String = converted as! String print(uppercaseNickname) 輝する侭畠てにこれをくのは寄 SE-0072 Fully eliminate implicit bridging conversions from Swift
13.
AnyObjectをAnyにすれば ? AnyObjectへの圧aQはk伏しない ? AnyObjectへのQI尖もく駅勣がない ?
畠てのSwiftの侏をObjective-Cに局せる ☆ 局したY惚どうなるかはコンパイラに販せる 繍栖議には畠てのSwiftの侏をブリッジしたい
14.
Objective-Cに鬉垢誂佑な い栽どうなるか ? _SwiftValueというクラスとして鞭け函る ? 書瘁もObjective-Cに鬉鼎韻蕕譴Swiftの侏は えていくので、この侏に卆贋するべきではな い
15.
箭えば https://github.com/apple/swift-evolution/blob/master/proposals/0139-bridge-nsnumber-a ? Int16 ★
_SwiftValue ? CGRect ★ _SwiftValue Swift 3.0.1 ? Int16 ★ NSNumber ? CGRect ★ NSValue Swift 3.0
16.
まとめ ? Objective-Cでidに、魘匹垢箸はオプショナル に廣吭 ? Objective-Cに局せるSwiftの侏は書瘁もえてい くと房われます
Download