Swift: class func .... 为什么在 class 中创建方法时使用 this 而不是 func?

Swift: class func .... why use this instead of func when creating a method inside a class?

我是编码新手,很抱歉提出愚蠢的问题。

我正在按照 Xcode 中的 Swift 构建笔记应用程序的教程学习。

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

你为什么要这样做?

提前感谢您的任何反馈。

这是 Swift 对 static methods 的看法:

Static methods are meant to be relevant to all the instances of a class (or no instances) rather than to any specific instance.

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

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

定义 class 方法意味着您不需要 class 的实例来使用该方法。所以代替:

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

您可以简单地使用:

MyClass.myMethod()

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

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

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

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

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

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