在Swift类中,静态函数/变量和类函数/变量有什么区别?
在Swift类中,静态函数/变量和类函数/变量有什么区别?
以下代码可以在Swift 1.2中编译:
class myClass { static func myMethod1() { } class func myMethod2() { } static var myVar1 = "" } func doSomething() { myClass.myMethod1() myClass.myMethod2() myClass.myVar1 = "abc" }
静态函数和类函数有什么区别?该使用哪一个?在什么情况下使用?
如果尝试定义另一个变量class var myVar2 = \"\"
,就会出现以下提示:
在类中暂不支持存储属性;你是想使用\'static\'吗?
当此功能被支持时,静态变量和类变量(即在类中都定义)之间的区别是什么?该使用哪一个?在什么情况下使用?
(Xcode 6.3)
admin 更改状态以发布 2023年5月24日
我在playground上尝试了mipadi的回答和评论,并想分享一下。就在这里,我认为应该将mipadi的答案标记为接受。
class A{ class func classFunction(){ } static func staticFunction(){ } class func classFunctionToBeMakeFinalInImmediateSubclass(){ } } class B: A { override class func classFunction(){ } //Compile Error. Class method overrides a 'final' class method override static func staticFunction(){ } //Let's avoid the function called 'classFunctionToBeMakeFinalInImmediateSubclass' being overriden by subclasses /* First way of doing it override static func classFunctionToBeMakeFinalInImmediateSubclass(){ } */ // Second way of doing the same override final class func classFunctionToBeMakeFinalInImmediateSubclass(){ } //To use static or final class is choice of style. //As mipadi suggests I would use. static at super class. and final class to cut off further overrides by a subclass } class C: B{ //Compile Error. Class method overrides a 'final' class method override static func classFunctionToBeMakeFinalInImmediateSubclass(){ } }