いくつかの投稿を検索しましたが、Swift で拡張機能を記述して、Objective-C コードから呼び出すことはできないと思いますよね?
@objc
同様の属性は、メソッド、クラス、プロトコルのみをサポートしますか?
いくつかの投稿を検索しましたが、Swift で拡張機能を記述して、Objective-C コードから呼び出すことはできないと思いますよね?
@objc
同様の属性は、メソッド、クラス、プロトコルのみをサポートしますか?
Swift 拡張機能を作成して、Objective-C コードで使用できます。Xcode 6.1.1 でテスト済み。
あなたがする必要があるのは次のとおりです。
Swift で拡張機能を作成します ( @objc
Swift 4.0.3 以降では注釈が必要です)
#import "ProjectTarget-Swift.h"
Objective-C クラス (「ProjectTarget」は、Swift 拡張機能が関連付けられている XCode ターゲットを表します)
Swift 拡張機能からメソッドを呼び出す
他の回答で説明されているように、生成された Swift ヘッダーのインポートはほとんどの場合に機能します。
これに対する例外は、カテゴリがブリッジされた型で定義されている場合です (つまり、拡張子が ではString
なくで定義されていNSString
ます)。これらのカテゴリは、対応する Objective-C に自動的にブリッジされることはありません。これを回避するには、Objective-C 型を使用する (および Swift コードで戻り値を でキャストするas String
) か、Swift と Objective-C の両方の型の拡張を定義する必要があります。