我知道何时使用这些不同的关键字,但是有人可以在我确实想要使用它们的时候为我们澄清,以及它们在运行时如何影响我的应用程序?
答案 0 :(得分:3)
静态
当您需要一些数据而不分配新对象时,使用静态方法或属性,静态的最常见用法可能是单例设计模式,或者当您有一些辅助类时。 例如,在函数中,您可以调用:
let temp = Helper.staticMethod();
,其中
class Helper {
private let test1234 = false
private func privateMethod() {
}
private static func privateStaticMethod() -> Int {
return 0
}
static func staticMethod() -> Int {
self.privateMethod() // Error
self.test1234 // Error
self.test1234 // Error
Helper.privateStaticMethod() // OK
return 0
}
}
来自staticMethod
的您无法访问非静态方法或类Helper
的属性
最终
最佳做法是将所有类声明为final,并在必须将它们子类化时将其删除。如果你尝试子类化最后一个类,那么Final会给你一个编译时错误,所以这可以帮助你拥有一个干净的架构,而不用冒着创建凌乱的代码的风险,它也有助于代码的可读性。
final class FinalClass {
}
class Sub1: FinalClass {
} //Error
class Base {
}
class SubBase: Base {
} //OK
私有
在范围之外看不到私有类/属性。 它可以帮助您在架构中实现良好的封装。
class A {
private let test = 1
let test2 = 1
}
let classA = A()
classA.test //Error
classA.test2 //OK
我建议您阅读Swift文档以获得更好的解释: https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Inheritance.html https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AccessControl.html https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html