Swiftで実現する非推奨(deprecated)APIの置換処理
来月のWWDC2015にて、次期iOS(iOS 9?)が発表されそうです。
新しいAPIが使えるようになり、楽しみが増える一方で使えなくなるAPIもあり
開発しているアプリの新バージョン対応に右往左往するシーズンです。
一般的に非推奨APIは以下の3種類に分類出来ます。
Objective-Cでの対応方法は確立しているので
今回は上記の3種類に対して、Swiftでどう対応していくのか整理します。
クラスが非推奨になった
Objective-C時代は、以下のような対応でした。
if ([DeprecatedClass class]) { // DeprecatedClassが存在する場合 } else { // DeprecatedClssが存在しない場合 // 新バージョンでの代替APIを使う
Swiftでは以下のような処理を実装します。
if NSClassFromString("DeprecatedClass") { // DeprecatedClassが存在する場合 } else { // DeprecatedClssが存在しない場合 // 新バージョンでの代替APIを使う }
メソッドが非推奨になった
Objective-C時代は、以下のような対応でした。
if ([obj respondsToSelecor:@selector("deprecatedMethod")]) { // deprecatedMethodが存在する場合 } else { // deprecatedMethodが存在しない場合 // 新バージョンでの代替APIを使う
Swiftでも同じですね!
if obj.respondsToSelector("deprecatedMethod") { // deprecatedMethodが存在する場合 } else { // deprecatedMethodが存在しない場合 // 新バージョンでの代替APIを使う }
プロトコルが非推奨になった
Objective-C時代は、以下のような対応でした。
if ([obj conformsToProtocol:@protocol("DeprecatedProtocol")]) { // DeprecatedProtocolが存在する場合 } else { // DeprecatedProtocolが存在しない場合 // 新バージョンでの代替APIを使う
Swiftでも同じですね!
if obj.conformsToProtocol("DeprecatedProtocol") { // DeprecatedProtocolが存在する場合 } else { // DeprecatedProtocolが存在しない場合 // 新バージョンでの代替APIを使う }