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

Protection level issues when accessing a struct within an extension

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

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 is inaccessible due to 'internal' protection level."

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

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

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

但是 Swift 的早期版本也是如此。我不知道,为什么您的代码可以正常工作。