访问扩展中的结构时的保护级别问题
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 的早期版本也是如此。我不知道,为什么您的代码可以正常工作。
我正在尝试将以下库实现到我的项目中:
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 的早期版本也是如此。我不知道,为什么您的代码可以正常工作。