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

时间:2016-12-02 11:41:33

标签: objective-c swift

有没有办法修改Swift for Objective-C中实现的方法的名称?

Swift 方法

static func convert(foo: Foo) -> Bar
Objective-C 中的

变为

+ (Bar *)convertWithFoo:(Foo *)foo;

所需的名称是

+ (Bar *)convertFoo:(Foo *)foo;    // without `With`

从Objective-C到Swift我会使用CF_SWIFT_NAME()NS_SWIFT_NAME()宏。

1 个答案:

答案 0 :(得分:5)

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

@objc(convertFoo:)
static func convert(foo: Foo) -> Bar { ... }

来自Swift参考中的"Attributes"

  

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