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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Objective-C是否有CF_SWIFT_NAME()的副本?相关的知识,希望对你有一定的参考价值。

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

答案

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

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

来自Swift参考资料中的"Attributes"

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

以上是关于Objective-C是否有CF_SWIFT_NAME()的副本?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在objective-c中禁用自动类型提升

是否可以在 Objective-c 项目中使用 Alamofire 的 Swift 文件?

是否可以在 Objective-C 中创建私有属性?

Objective-C 中的 int 是不是有默认值 1?

如何在 Objective-C 中以编程方式检查协议是不是包含某些方法?

是否可以使用objective-c从parse.com检索数据并将其显示在网站上?