You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 08:01:46