0

快速,如何使扩展仅对少数类而不是对所有人可见?

我在一个名为UIImage+filters.swift. 我将仅在我的项目中的 2 个类中使用此扩展,PhotoImage并且PhotosViewController. 我希望扩展只对这两个类可见。我怎样才能做到这一点?

4

2 回答 2

1

这是不可能的,类/扩展的访问修饰符在所有单元中表现一致,将外部模块和它们所在的模块之间的权限分开。这意味着您可以声明您的类/扩展在您的应用程序/模块中是可访问的,并且不能被外人访问或对所有人可见。

Swift3带有一个新的访问修饰符,但没有限制模块/应用程序内部的部分访问。

于 2016-09-02T01:02:43.837 回答
0

Swift 中没有“朋友”类的概念。但是您可以通过在扩展程序中使用 private 来破解它。为此,扩展类以及您的 PhotoImage 和 PhotosViewController 必须在一个文件中。通过在你的 UIImage 扩展中使用 private,添加的功能只在这个文件中可见,在其他文件中不可见。

PhotosViewController.swift

private extension UIImage
{
  func applyFilter()
  {
  }
}


class PhotosViewController : UIViewController
{
  // applyFilter function in visible in this class
} 

另一个ViewController.swift

class PhotosViewController : UIViewController
{
  // applyFilter function in NOT visible in this class
}
于 2016-09-02T01:23:43.280 回答