は、私はObjective-Cのに公開したいメソッドを持ついくつかのスウィフトクラスがあるとしましょう:Swiftのデフォルトのパラメータ値をObjective-Cに公開できますか?
@objc(Worker) class Worker : NSObject {
func performWork(label: String = "Regular Work") {
// Perform work
}
}
私は2つの方法でこれを呼び出すことができます。
Worker().performWork()
Worker().performWork("Swift Development")
しかし、Objective-から呼び出された場合C、私はこのメソッドの「デフォルト」のバージョンを取得していない - 私はラベルを指定する必要があります。
[[[Worker alloc] init] performWork:@"Obj-C Development"];
メートルから定義を参照してください。以下Y AppName-Swift.h
ヘッダー:
SWIFT_CLASS_NAMED("Worker")
@interface Worker : NSObject
- (void)performWork:(NSString * __nonnull)label;
- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end
私はこのシグネチャを持つメソッドを参照してくださいを期待:
- (void)performWork;
私はにObjCは、デフォルトのパラメータ値をサポートしていません実現が、私の仮定はスウィフトということでしたデフォルト値は、単純な実装で「実際の」関数を呼び出す追加のSwift関数を生成します(つまり、 Obj-Cで使用するtypical implementationを隠している構文的な砂糖です)。
Objective-Cにこのデフォルト値を公開する方法はありますか?そうでない場合は、誰も私がなぜこれが利用できないのかのドキュメントを指摘できますか?
で指摘したようにこれが間違っている、私はあなたがAppleの「より良い理由を買ってあげる疑いますそれに到達するには余りにも忙しいです "。昨年のWWDCで、すべての会談はSwiftに関するものでした。 ObjCには2つの新機能しかありません:nullabilityマーカーとジェネリックス –