有没有办法修复Swift for Objective-C中实现的方法的名称?
一个Swift方法
static func convert(foo: Foo) -> Bar
Run Code Online (Sandbox Code Playgroud)
在Objective-C成为
+ (Bar *)convertWithFoo:(Foo *)foo;
Run Code Online (Sandbox Code Playgroud)
而所需的名字是
+ (Bar *)convertFoo:(Foo *)foo; // without `With`
Run Code Online (Sandbox Code Playgroud)
从Objective-C到Swift我会使用CF_SWIFT_NAME()或NS_SWIFT_NAME()宏.
是的,您可以使用@objc属性实现:
@objc(convertFoo:)
static func convert(foo: Foo) -> Bar { ... }
Run Code Online (Sandbox Code Playgroud)
从Swift参考中的"Attributes":
该
objc属性可选地接受单个属性参数,该参数由标识符组成.如果要为objc属性应用的实体向Objective-C公开其他名称,请使用此属性.您可以使用此参数来命名类,枚举,枚举情况,协议,方法,getter,setter和初始值设定项.