访问扩展中的结构时出现保护级别问题



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

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有一些新的幕后权限接管,需要被覆盖。

我猜,你提到的扩展是不是在你的MainVC相同的目标?

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

但是在早期版本的Swift中也是如此。我不知道,为什么你的代码能工作。

最新更新