4

MySwift.swiftファイルで定義された Swift 関数:

func SomeSwift()
{

}

SomeSwift()はどの Swift クラスでも定義されておらず、純粋な関数です。

CMD+の後B、プロジェクトをビルドして開くProject-Swift.hと、SomeSwift()そこには表示されません。

Swift の関数は、いくつかの Swift クラスで定義する必要がありますか? と@objcマーク付き?

次のように:

@objc class SomeSwift: NSObject {
   func SomeSwift()
  {

  }
}
4

1 に答える 1

7

Objective-C からの Swift の使用に関するApple のドキュメントを参照します。

Swift クラスは、Objective-C でアクセスして使用できるようにするには、Objective-C クラスの子孫でなければなりません

あなたのクラスはそうあるべきであることを意味します@objc class SomeSwift: NSObject(あなたは正しいです!)が、Swiftファイルのすべてにアクセスすることはできません:

Objective-C クラスから派生した Swift クラスを作成すると、Objective-C と互換性のあるクラスとそのメンバー (プロパティ、メソッド、添え字、初期化子) が自動的に Objective-C から利用可能になります。これには、以下にリストされているような Swift のみの機能は含まれません。

ジェネリック

タプル

Swift で Int 生の値型を使用せずに定義された列挙型

Swift で定義された構造

Swift で定義されたトップレベル関数

Swift で定義されたグローバル変数

Swift で定義された型エイリアス

Swift スタイルの可変引数

ネストされた型

カリー化された関数

参照

SomeSwiftしたがって、最上位関数は使用できません。

宣言の前に追加しようとしても@objc、コンパイラは次のように伝えます。

ここに画像の説明を入力

@objc は、クラスのメンバー、@objc プロトコル、およびクラスの具象拡張を使用する場合にのみ使用できます。

を削除するよう提案し@objcます。

于 2016-12-01T07:58:32.080 に答える