class MyClass {
func sampleFunction() { }
}
假设,我有一个类,我希望其中的方法被它的任何子类访问/覆盖,而不是被同一模块中的任何其他类访问/覆盖。在 swift 中没有这样的访问修饰符可以满足这一要求。在这种情况下,我怎么能达到同样的目标。
我想我知道你想做什么。 正如 Matt 所说,您需要将其标记为文件私有。
如果您在多个文件中有多个类,则需要通过扩展来完成。 不过有一个警告,它必须@objc声明。
//file X.swift
class X
{
}
//file Y.swift
class Y:X{
}
//file X-Extensions.swift
fileprivate extension X
{
@objc func doit(){}
}
fileprivate extension Y{
@objc override func doit() {
}
}
//file Z.swift
class Z{
let x = X()
func doit(){
x.doit() //syntax error, doit not found for instance x
}
}
让它fileprivate
,并将所有其他需要查看它的类放在同一个文件中。
(你正在尝试实现类似protected
的东西,但 Swift 没有这样的访问规则。