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

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

最佳答案

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

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

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

关于swift - 访问扩展中的结构时的保护级别问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39468127/

相关文章:

ios - 按下两个 UIButton 时如何更改它们的颜色?

json - swift 3 将 json 参数发布到 api

ios - Swift 中的序列化、反序列化到 JSON

ios - 了解 TableView 和 UISegmentedControl

ios - 快速自定义 map 类

ios - Swift 3 - 方向改变时翻转整个屏幕/ View

ios - 动画用户定位圈 swift 3 + Google map

mysql - MySQL v5.7.11安装编译后报错

linux - 如何在 SSH 连接上编辑 root 拥有的文件

python - Git tree-filter 在提交时运行 python 脚本