読者です 読者をやめる 読者になる 読者になる

Swiftのclass/static修飾子

iOSアプリの実装でけっこう使っていますが、ちゃんと調べたことなかったので。

propertyの修飾子として

まず、propertyの修飾子としてのclassとstaticですが、 AppleによるSwiftの公式資料を確認すると、

You define type properties with the static keyword.   
For computed type properties for class types,   
you can use the class keyword instead to allow subclasses to  
override the superclass’s implementation.   
The example below shows the syntax  
for stored and computed type properties:

とあります。
なので、Classのstored propertyの場合には、static一択、computed propertyの場合は overrideするしないに応じて、staticを使うかclassを使うというところでしょうか。

methodの修飾子として

メソッドについては、 Appleの公式資料

You indicate type methods by writing the static keyword  
before the method’s func keyword.  
Classes may also use the class keyword to allow subclasses  
to override the superclass’s implementation of that method.

とあります。なので、例えば
String(実体は構造体)のextensionについては、classが使えないため、staticを使用し、 NSString(実体はクラス)のextensionについては、class、staticのどちらも使える、というところですね。

参考

The Swift Programming Language (Swift 2.1) Properties The Swift Programming Language (Swift 2.1) Methods