我正在尝试将以下库实现到我的项目中:
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
),它们自动被 内部
。这意味着,您只能在同一目标中访问这些属性。
但在 Swift 的早期版本中也是如此。我不知道,为什么您的代码一直有效。
关于swift - 访问扩展中的结构时的保护级别问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39468127/