Closed. This question needs to be more focused。它目前不接受答案。
想改进这个问题吗?更新问题,使其只关注一个问题editing this post
三年前关闭。
我知道什么时候使用这些不同的关键字,但是有人能告诉我什么时候我想使用它们,它们在运行时如何影响我的应用程序吗?

最佳答案

静止的
当需要一些数据而不分配新对象时,可以使用静态方法或属性,静态的最常见用法可能是单例设计模式,或者当您有一些helper类时。
例如,在函数中可以调用:

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类进行子类划分,那么它会给您提供一个编译时错误,因此这可以帮助您拥有一个干净的体系结构,而不必冒创建混乱代码的风险,并且它也有助于代码的可读性。
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

关于ios - 我什么时候想在swift 2.2中使用static,final,private? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38884701/

10-13 06:58