当我在 Swift 4 中明确使用内部访问控制级别时

When I use internal access control level explicitly in Swift 4

我对内部访问控制级别有疑问

Internal 是 Swift

中的 default 访问控制级别

所以我认为应该删除所有 internal 访问控制

在Swift中是否有明确使用internal访问控制的具体案例?

何时或如何在 Swift 中使用 internal 访问控制?

根据文档:

Default Access Levels All entities in your code (with a few specific exceptions, as described later in this chapter) have a default access level of internal if you don’t specify an explicit access level yourself. As a result, in many cases you don’t need to specify an explicit access level in your code.

来源:https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html

正如您所提到的,使用 "internal" 关键字除了明确表示将来不应该在没有仔细考虑的情况下 public 之外没有任何效果。此时使用 "internal" 关键字更多的是记录和注释您的代码。

当使用默认访问级别内部时,无需显式添加内部。 这意味着 SomeInternalClass 和 someInternalConstant 可以在没有显式访问级别修饰符的情况下编写,并且仍然具有内部访问级别。然而,关键字 "internal" 仅供开发人员理解。

class SomeInternalClass {}              // implicitly internal
let someInternalConstant = 0            // implicitly internal

我发现一个案例internal需要明确添加:

public internal(set) var myInt = 0

省略 internal 关键字会导致编译错误。

这在 swift package/pod 中特别有用。 属性 是公开的,但只能在package/pod 内部,可以更改值。