访问扩展程序

时间:2016-09-13 10:45:01

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

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

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

1 个答案:

答案 0 :(得分:7)

我想,你提到的扩展名与你的MainVC目标不同?

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

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