Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Mix and Match
Swift and Objective-C
Goichi Hirakawa
自己紹介
• 平川 剛一 (Goichi Hirakawa)
• @gooichi
• OS X / iOSソフトウェアエンジニア(フリー)
• GyazSquare / GitHub
• Mailer、デバイス制御などお固いアプリをメイン
•...
SwiftとObjCの組み合わせ
• 同一プロジェクトで共存可
• 考慮すべきこと:
• 相互クラス参照
• ObjCからSwiftの利用
• Swift名オーバーライド
• Swiftで利用不可
• ObjC宣言の洗練
• モジュールの命名
クラス参照(アプリ)
• Objective-CをSwiftへインポート
• Xcodeが XXX-Bridging-Header.h を自動的に作成
• Swiftから参照するクラスのヘッダを記述
#import "XYZCustomCell...
クラス参照(フレームワーク)
• Objective-CをSwiftへインポート
• Build Settingsの Defines Module 設定を YES
• UmbrellaヘッダにSwiftに公開するObjCヘッダを記述
#impor...
ObjCからSwiftの利用
• SwiftコードをインポートするとObjC構文で利用可能
• @objc属性が必要
• ObjCクラス継承の場合、自動的に付加
• ObjC非互換の機能は利用不可
• ジェネリクス、タプル、Int Raw値でな...
Swift名オーバーライド
• ObjCのメソッド名、列挙型のケース、オプション設定値を変更可能
• NS_SWIFT_NAME(_name)マクロ
+ (instancetype)recordWithRPM:(NSUInteger)RPM
N...
Swiftで利用不可
• Swiftでは適切でない/不要なObjCの宣言をインポー
トさせない
• NS_SWIFT_UNAVAILABLE(_msg)マクロ
+ (instancetype)collectionWithValues:(NSAr...
ObjC宣言の洗練
• 元の実装を有効にしたまま、洗練されたSwiftのインターフェイスを拡張で提供
• NS_REFINED_FOR_SWIFTマクロ
• ObjCのインターフェイス
@interface Color : NSObject
-...
モジュールの命名
• 製品モジュール名からXcodeはヘッダ接頭辞を命名
• XXX-Bridging-Header.h 、 XXX-Swift.h
• デフォルトで製品モジュール名は製品名と同じ
• アルファベット、数字以外はアンダースコア(...
まとめ
• SwiftとObjective-Cの組み合わせについて
• 詳細については、Using Swift with Cocoa and Objective-C (Swift 2.1)の
Mix and Matchを参照
• 追記:NS_S...
Nächste SlideShare
Wird geladen in …5
×

Mix and Match / Swift and Objective-C

2.597 Aufrufe

Veröffentlicht am

もくもくiOS勉強会@ネクスト 1周年記念LT会
http://mokumoku-ios-at-next.connpass.com/event/19921/
Swift 2とObjective-Cの組み合わせについて

Veröffentlicht in: Software
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Antworten 
    Sind Sie sicher, dass Sie …  Ja  Nein
    Ihre Nachricht erscheint hier

Mix and Match / Swift and Objective-C

  1. 1. Mix and Match Swift and Objective-C Goichi Hirakawa
  2. 2. 自己紹介 • 平川 剛一 (Goichi Hirakawa) • @gooichi • OS X / iOSソフトウェアエンジニア(フリー) • GyazSquare / GitHub • Mailer、デバイス制御などお固いアプリをメイン • Objective-C歴1X年 • NextStep時代から…
  3. 3. SwiftとObjCの組み合わせ • 同一プロジェクトで共存可 • 考慮すべきこと: • 相互クラス参照 • ObjCからSwiftの利用 • Swift名オーバーライド • Swiftで利用不可 • ObjC宣言の洗練 • モジュールの命名
  4. 4. クラス参照(アプリ) • Objective-CをSwiftへインポート • Xcodeが XXX-Bridging-Header.h を自動的に作成 • Swiftから参照するクラスのヘッダを記述 #import "XYZCustomCell.h" • SwiftをObjective-Cへインポート • Xcodeが XXX-Swift.h を自動的に作成 • Swiftを利用するObjCソースでimport #import "ProductModuleName-Swift.h"
  5. 5. クラス参照(フレームワーク) • Objective-CをSwiftへインポート • Build Settingsの Defines Module 設定を YES • UmbrellaヘッダにSwiftに公開するObjCヘッダを記述 #import <XYZ/XYZCustomCell.h> • SwiftをObjective-Cへインポート • Build Settingsの Defines Module 設定を YES • Swiftクラスを利用するObjCソースでimport #import <ProductName/ProductName-Swift.h>
  6. 6. ObjCからSwiftの利用 • SwiftコードをインポートするとObjC構文で利用可能 • @objc属性が必要 • ObjCクラス継承の場合、自動的に付加 • ObjC非互換の機能は利用不可 • ジェネリクス、タプル、Int Raw値でない列挙型、Swiftで定義さ れた構造体/トップレベル関数/グローバル変数/型エイリアス、 Swiftスタイルの可変長引数、ネスト型、カリー関数 • ObjCでのSwiftクラスのサブクラス化は不可
  7. 7. Swift名オーバーライド • ObjCのメソッド名、列挙型のケース、オプション設定値を変更可能 • NS_SWIFT_NAME(_name)マクロ + (instancetype)recordWithRPM:(NSUInteger)RPM NS_SWIFT_NAME(init(RPM:)); + (id)recordWithQuality:(double)quality NS_SWIFT_NAME(record(quality:)); typedef NS_ENUM(NSInteger, ABCRecordSide) { ABCRecordSideA, ABCRecordSideB NS_SWIFT_NAME("FlipSide"), };
  8. 8. Swiftで利用不可 • Swiftでは適切でない/不要なObjCの宣言をインポー トさせない • NS_SWIFT_UNAVAILABLE(_msg)マクロ + (instancetype)collectionWithValues:(NSArray *)values forKeys:(NSArray<NSCopying> *)keys NS_SWIFT_UNAVAILABLE("Use a dictionary literal instead");
  9. 9. ObjC宣言の洗練 • 元の実装を有効にしたまま、洗練されたSwiftのインターフェイスを拡張で提供 • NS_REFINED_FOR_SWIFTマクロ • ObjCのインターフェイス @interface Color : NSObject - (void)getRed:(nullable CGFloat *)red green:(nullable CGFloat *)green blue:(nullable CGFloat *)blue alpha:(nullable CGFloat *)alpha NS_REFINED_FOR_SWIFT; @end • Swiftの拡張インターフェイス extension Color { var RGBA: (red: CGFloat, green: CGFloat, blue: CGFloat, alpha: CGFloat) { var r: CGFloat = 0.0 var g: CGFloat = 0.0 var b: CGFloat = 0.0 var a: CGFloat = 0.0 __getRed(&r, green: &g, blue: &b, alpha: &a) return (red: r, green: g, blue: b, alpha: a) } }
  10. 10. モジュールの命名 • 製品モジュール名からXcodeはヘッダ接頭辞を命名 • XXX-Bridging-Header.h 、 XXX-Swift.h • デフォルトで製品モジュール名は製品名と同じ • アルファベット、数字以外はアンダースコア(_)
  11. 11. まとめ • SwiftとObjective-Cの組み合わせについて • 詳細については、Using Swift with Cocoa and Objective-C (Swift 2.1)の Mix and Matchを参照 • 追記:NS_SWIFT_NOTHROWマクロ • スローさせずにNSErrorを生成するための宣言 • 詳細はAdopting Cocoa Design Patternsを参照 - (BOOL)checkResourceIsReachableAndReturnError: (NSError **)error NS_SWIFT_NOTHROW NS_AVAILABLE(10_6, 4_0);

×