重命名方法名 - ShenYj/ShenYj.github.io GitHub Wiki
-
NS_SWIFT_NAME
重新命名在swift中的名称通过
NS_SWIFT_NAME
来将Object-C
方法在Swift
下重名命名e.g.
+ (void)testStaticFunc NS_SWIFT_NAME(ocTestStaticFunc());
在 Swift 中使用
OCClass.ocTestStaticFunc()
除了使用 NS_SWIFT_NAME
, 还有一种方式: NS_REFINED_FOR_SWIFT
使用 NS_SWIFT_NAME
或 NS_REFINED_FOR_SWIFT
都是在源码基础上针对一个个方法来修改的,对于一个早期纯 Object-C 版本的 SDK 项目,想要批量去优化命名来适配 Swift的话, 苹果还提供了一种方式
在作为 SDK 开发时,可以在 SDK 目录内创建 .apinotes
文件 (YAML文件) 来统一进行配置,此方法不仅限于修改方法名称
objc
源码的Public Header
下就存有这个文件
-
具体操作方式可以阅读 apinotes实践 这篇笔记
-
@objc
重新命名在 objective-c 中的名称e.g.
@objc(swiftInstanceMethod) public func innstanceMethod() { print("\(#function)") }
OC 中使用
[[SwiftClass new] swiftInstanceMethod];
可以学习下 FloatingPanel 这个开源库