快速,如何使扩展仅对少数类而不是对所有人可见?
我在一个名为UIImage+filters.swift
. 我将仅在我的项目中的 2 个类中使用此扩展,PhotoImage
并且PhotosViewController
. 我希望扩展只对这两个类可见。我怎样才能做到这一点?
快速,如何使扩展仅对少数类而不是对所有人可见?
我在一个名为UIImage+filters.swift
. 我将仅在我的项目中的 2 个类中使用此扩展,PhotoImage
并且PhotosViewController
. 我希望扩展只对这两个类可见。我怎样才能做到这一点?
这是不可能的,类/扩展的访问修饰符在所有单元中表现一致,将外部模块和它们所在的模块之间的权限分开。这意味着您可以声明您的类/扩展在您的应用程序/模块中是可访问的,并且不能被外人访问或对所有人可见。
Swift3
带有一个新的访问修饰符,但没有限制模块/应用程序内部的部分访问。
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
}