【问题标题】:Swift: class func .... why use this instead of func when creating a method inside a class?Swift: class func .... 为什么在类中创建方法时使用 this 而不是 func ?
【发布时间】:2015-10-10 17:15:04
【问题描述】:

我是编码新手,为愚蠢的问题道歉。

我正在按照教程在 Xcode 中使用 Swift 构建一个笔记应用程序。

在类定义中,我一直在使用关键字 func myMethod 等定义方法。有一次,讲师决定使用类 func myMethod 定义一个类方法(在现有类中)。

你为什么要这样做?

提前感谢您的任何反馈。

【问题讨论】:

    标签: swift class definition func


    【解决方案1】:

    这是 Swift 对 static methods 的看法:

    静态方法意味着与类的所有实例(或无实例)相关,而不是与任何特定实例相关。

    其中一个例子是UIView 中的动画函数,或MFMailComposeViewController 中的canSendMail 函数。

    【讨论】:

      【解决方案2】:

      一个答案是命名空间。如果一个函数只与某个类相关,则不需要全局声明该函数。

      【讨论】:

        【解决方案3】:

        通过定义一个类方法,这意味着您不需要该类的实例来使用该方法。所以而不是:

        var myInstance: MyClass = MyClass()
        myInstance.myMethod()
        

        你可以简单地使用:

        MyClass.myMethod()
        

        【讨论】:

          【解决方案4】:

          静态(类)函数无需可用类的实例即可调用;无需实例化对象即可调用它。

          这对于封装(避免将函数放在全局命名空间中)或适用于给定类的所有对象的操作(例如跟踪当前实例化的对象总数)很有用。

          静态函数可用于定义相关实用函数的命名空间集合:

          aDate = Utils.getDate()
          aTime = Utils.getTime()
          

          另一个常见用途是singleton pattern,其中静态函数用于提供对仅限于实例化一次的对象的访问:

          obj = MySingleton.getInstance()
          obj.whatever()
          

          【讨论】:

            猜你喜欢
            • 2015-10-26
            • 2010-10-22
            • 2019-02-20
            • 1970-01-01
            • 1970-01-01
            • 2010-10-14
            相关资源
            最近更新 更多