article有助于理解Swift 3中的新访问说明符.文中还举例说明了fileprivateprivate的不同用法.

我的问题是——在一个只在这个文件中使用的函数上使用fileprivate和使用private不一样吗?

推荐答案

fileprivate是以前的private

在同一个源文件中定义了扩展名的情况下,同一类型的扩展名可以访问类型内的Swift 4,个私有声明.

示例(全部在一个源文件中):

class A {
    private func foo() {}
    fileprivate func bar() {}

    func baz() {
        foo()
        bar()
    }
}

extension A {
    func test() {
        foo() // Swift 3: error: use of unresolved identifier 'foo'
              // Swift 4: no error because extension is in same source file
        bar()
    }
}

let a = A()
a.foo() // error: 'foo' is inaccessible due to 'private' protection level
a.bar()
  • private foo方法只能在

  • file private bar方法可以从同一源文件访问.

Notes:

  1. 提案SE-0159 – Fix Private Access Levels建议恢复Swift 4中的Swift 2语义.在对swift evolution邮件列表进行了长时间且有争议的讨论后,该提案获得rejected票.

  2. 建议SE-0169 – Improve Interaction Between private Declarations and Extensions建议private

Swift相关问答推荐

Swift 5.10:无法从非隔离的deinit访问属性*,这是Swift 6中的错误''''

SWIFT中MAP的静态方法包装器

如何增加 NSStatusBar 图像大小?

计算 CoreData 中所有唯一对象的数量?

如何在闭包中使用构造 await sync

将 Encodable 扩展添加到 Swift 嵌套枚举

ConfirmationDialog取消swiftui中的错误

为什么在Swift中每次调用Decimal类型的formatted()方法都会越来越慢?

String(validatingUTF8:) 和 String(utf8String:) 之间有区别吗?

Swift-SceneKit-无法从art.scnassets加载.scn文件

swift 是否遇到 Java 的 2gb 最大序列化大小问题?

如何在 Combine 合并运算符的输出上使用 eraseToAnyPublisher

iOS SwiftUI - 无法转换 ObservedObject 类型的值

在视图中设置所有变量

调整文本的字体大小以适应 UIButton

在 Swift for iOS 中沿圆形路径绘制文本

自动布局:获取 UIImageView 高度以正确计算单元格高度

自定义 MKAnnotation 标注视图?

如何在 SwiftUI 中以编程方式滚动列表?

UIButton 标题左对齐问题 (iOS/Swift)