【发布时间】:2015-10-10 17:15:04
【问题描述】:
我是编码新手,为愚蠢的问题道歉。
我正在按照教程在 Xcode 中使用 Swift 构建一个笔记应用程序。
在类定义中,我一直在使用关键字 func myMethod 等定义方法。有一次,讲师决定使用类 func myMethod 定义一个类方法(在现有类中)。
你为什么要这样做?
提前感谢您的任何反馈。
【问题讨论】:
标签: swift class definition func
我是编码新手,为愚蠢的问题道歉。
我正在按照教程在 Xcode 中使用 Swift 构建一个笔记应用程序。
在类定义中,我一直在使用关键字 func myMethod 等定义方法。有一次,讲师决定使用类 func myMethod 定义一个类方法(在现有类中)。
你为什么要这样做?
提前感谢您的任何反馈。
【问题讨论】:
标签: swift class definition func
这是 Swift 对 static methods 的看法:
静态方法意味着与类的所有实例(或无实例)相关,而不是与任何特定实例相关。
其中一个例子是UIView 中的动画函数,或MFMailComposeViewController 中的canSendMail 函数。
【讨论】:
一个答案是命名空间。如果一个函数只与某个类相关,则不需要全局声明该函数。
【讨论】:
通过定义一个类方法,这意味着您不需要该类的实例来使用该方法。所以而不是:
var myInstance: MyClass = MyClass()
myInstance.myMethod()
你可以简单地使用:
MyClass.myMethod()
【讨论】:
静态(类)函数无需可用类的实例即可调用;无需实例化对象即可调用它。
这对于封装(避免将函数放在全局命名空间中)或适用于给定类的所有对象的操作(例如跟踪当前实例化的对象总数)很有用。
静态函数可用于定义相关实用函数的命名空间集合:
aDate = Utils.getDate()
aTime = Utils.getTime()
另一个常见用途是singleton pattern,其中静态函数用于提供对仅限于实例化一次的对象的访问:
obj = MySingleton.getInstance()
obj.whatever()
【讨论】: