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()
我是编码新手,很抱歉提出愚蠢的问题。
我正在按照 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()