为啥我们需要将 Swift 类标记为 `public` 或 `open` 以使其在 Objective-C 框架项目中可访问?

Posted

技术标签:

【中文标题】为啥我们需要将 Swift 类标记为 `public` 或 `open` 以使其在 Objective-C 框架项目中可访问?【英文标题】:Why do we need to mark a Swift class `public` or `open` to make it accessible in an Objective-C framework project?为什么我们需要将 Swift 类标记为 `public` 或 `open` 以使其在 Objective-C 框架项目中可访问? 【发布时间】:2019-08-12 10:25:55 【问题描述】:

作为标题。

但基于 Apple 的 doc,它说:

用 internal 修饰符和标记的方法和属性 在继承自 Objective-C 类的类中声明的是 Objective-C 运行时可以访问。

它说internal 应该可以工作。

我是不是误会了什么?

【问题讨论】:

在你的引文中没有说你必须公开或公开,你不必这样做,他们可以留在内部从 obj-c 访问 【参考方案1】:

类可以被运行时访问,但不能被程序员访问。 您将需要类头来使用它们。 如果您将它们标记为公共,Xcode 只会为您生成公共的 Objective-C 标头。

【讨论】:

以上是关于为啥我们需要将 Swift 类标记为 `public` 或 `open` 以使其在 Objective-C 框架项目中可访问?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 Swift 类需要 init 而不是 Swift struct

Spring - 为啥我们需要标记一个类@repository(或@Component以外的任何东西)[重复]

为啥 @noescape 在需要时不会自动应用于 Swift 闭包?

为啥 ArrayList 没有标记为 [过时]?

为啥我需要在 Swift 的类中指定变量的类型?

定义派生类时,为啥基类标记为“public”? [复制]