我什么时候想在swift 2.2中使用static,final,private?

时间:2016-08-10 22:40:04

标签: ios swift mobile

我知道何时使用这些不同的关键字,但是有人可以在我确实想要使用它们的时候为我们澄清,以及它们在运行时如何影响我的应用程序?

1 个答案:

答案 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