【问题标题】:Protection level issues when accessing a struct within an extension访问扩展中的结构时的保护级别问题
【发布时间】:2017-09-23 03:44:30
【问题描述】:

我正在尝试在我的项目中实现以下库:

https://github.com/knutigro/COBezierTableView

要使用它,可以为以下属性指定自定义值:

public extension UIView {

  public struct BezierPoints {

      static var p1 = CGPoint.zero
      static var p2 = CGPoint.zero
      static var p3 = CGPoint.zero
      static var p4 = CGPoint.zero
  }
}

在我的 MainVC 中配置如下:

UIView.BezierPoints.p1 = CGPoint(...
UIView.BezierPoints.p2 = CGPoint(...
UIView.BezierPoints.p3 = CGPoint(...
UIView.BezierPoints.p4 = CGPoint(...

在 Swift 2.3 演示项目中没有错误。在 Swift 3 项目中,我收到错误消息:

“由于‘内部’保护级别,p1 不可访问。”

有人可以在这里解释一下这个问题吗,我猜 Swift 3 有一些新的幕后权限接管需要被覆盖。

【问题讨论】:

    标签: swift file-permissions swift3 access-control swift-extensions


    【解决方案1】:

    我猜,您提到的扩展与您的 MainVC 不在同一个目标中?

    因为p1 等没有分配保护级别(并且struct 不是private),它们自动为internal。这意味着,您只能在同一目标中访问这些属性。

    但在早期版本的 Swift 中也是如此。我不知道,为什么你的代码一直有效。

    【讨论】:

    猜你喜欢
    • 2010-10-15
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 2021-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多