如何让Swift方法仅对Objective-C可见,对Swift隐藏?
实现仅对Objective-C可见的Swift方法
可以实现,核心是利用@available的平台针对性标记,结合@objc来精准控制方法的可见性:
直接实现方案
在方法上同时添加@objc和针对Swift的不可用标记:
class MyClass: NSObject { @objc @available(swift, unavailable, message: "此方法仅对Objective-C可见") static func foo() { // 在这里实现方法逻辑 print("Objective-C调用了foo方法") } }
效果说明
- Objective-C端:导入类的头文件后,可正常通过
[MyClass foo];调用该方法,完全不受限制。 - Swift端:尝试调用
MyClass.foo()时,会直接触发编译错误,提示你设置的自定义消息,从编译层面阻止Swift代码访问。
注意事项
- 类必须继承自
NSObject,否则@objc无法将方法暴露给Objective-C运行时。 @available(swift, unavailable)仅作用于Swift环境,不会影响Objective-C对@objc方法的识别。
内容的提问来源于stack exchange,提问作者Tometoyou
相关产品推荐
相关产品推荐

