当前位置 : 主页 > 手机开发 > 其它 >

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

来源:互联网 收集:自由互联 发布时间:2021-06-11
我正在尝试将以下库实现到我的项目中: https://github.com/knutigro/COBezierTableView 要使用它,可以为以下属性提供自定义值: public extension UIView { public struct BezierPoints { static var p1 = CGPoint.zero
我正在尝试将以下库实现到我的项目中:

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等没有分配保护级别(并且结构不是私有的),所以它们是自动内部的.这意味着,您只能在同一目标中访问这些属性.

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

网友评论