重命名方法名 - 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 这个开源库