2016-12-22 2 views
1

使用したいポッドには、使用したいクラスの冒頭にプレフィックス@objcがありません。クラスに `@ objc`という接頭辞が付いていない場合、Objective-CプロジェクトでSwiftで書かれたポッドを使用できますか?

Object-Cプロジェクトでもこのポッドを使用できますか?

-

PS:私の質問はHow to import and use Swift Pod Framework in Objective-C Projectよりも一般的である(#import文の問題に焦点を当てて)

+0

[Objective-CプロジェクトでSwift Podフレームワークをインポートして使用する方法]の複製可能性(http://stackoverflow.com/questions/27995691/how-to-import-and-use-swift-pod-framework- in-objective-c-project) – JAL

答えて

4

TTGSnackbarポッドをインポート支障を得なかっました。大部分のケースでは、それはNSObjectのサブクラスであることを意味します。クラスがobjc_object構造に準拠することができる他の方法がいくつかあります:NSProxyをサブクラス化するか、それにマッチする独自の構造を巧みにレイアウトし、システムライブラリのフックを追加して、無料のブリッジまたはlibSystem。スウィフトオブジェクトはデフォルトではこれを行わないため、ObjCには表示されません。

@objcを追加する必要はありません。実際、それは一般にコンパイルされません。クラスをNSObjectのサブクラスにする必要があります。これは、コンパイラオプションでは不可能な大きな変更です。メモリレイアウト、メッセージディスパッチング、およびその他の動作を変更します。ソースコードを変更し、少なくとも再コンパイルする必要があります。

1

アップルguideline

プライベート宣言がさらされていない、言うように@IBAction、@ IBOutlet、または@objcで明示的に指定されている場合を除き、Objective-Cです。

したがって、クラス定義の前に「open」というキーワードがある場合は、それは問題ありません。

P.Sは:少なくとも、私はにObjCのすべてのクラスはobjc_object構造に準拠している必要があり、私のObjective-Cのプロジェクトに

+0

それはちょうど 'publicクラス'ではありません。このプロジェクトは:https://github.com/alehed/SyntaxKit – Colas

+0

publicとopenは等価ですので、それは大丈夫です –

+0

Object-Cクラスで使用したい場合、Swiftプロジェクトのクラスは利用できません。たぶん、私は仲介Swiftクラスを作成する必要があります。 – Colas

関連する問題