Objective-C是否有CF_SWIFT_NAME()的副本?

Art*_*nko 4 objective-c swift

有没有办法修复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()宏.

Mar*_*n R 5

是的,您可以使用@objc属性实现:

@objc(convertFoo:)
static func convert(foo: Foo) -> Bar { ... }
Run Code Online (Sandbox Code Playgroud)

从Swift参考中的"Attributes":

objc属性可选地接受单个属性参数,该参数由标识符组成.如果要为objc属性应用的实体向Objective-C公开其他名称,请使用此属性.您可以使用此参数来命名类,枚举,枚举情况,协议,方法,getter,setter和初始值设定项.