[swift] Swift에서 클래스 메소드 / 속성을 어떻게 만드나요?

Objective-C의 클래스 (또는 정적) 메서드는 +in 선언을 사용하여 수행 되었습니다.

@interface MyClass : NSObject

+ (void)aClassMethod;
- (void)anInstanceMethod;

@end

이것이 Swift에서 어떻게 달성 될 수 있습니까?



답변

유형 속성유형 메서드 라고 하며 class또는 static키워드 를 사용합니다 .

class Foo {
    var name: String?           // instance property
    static var all = [Foo]()    // static type property
    class var comp: Int {       // computed type property
        return 42
    }

    class func alert() {        // type method
        print("There are \(all.count) foos")
    }
}

Foo.alert()       // There are 0 foos
let f = Foo()
Foo.all.append(f)
Foo.alert()       // There are 1 foos


답변

Swift에서는 유형 속성 및 유형 메소드라고하며 클래스 키워드를 사용합니다.
신속하게 클래스 메서드 또는 유형 메서드 선언 :

class SomeClass
{
     class func someTypeMethod()
     {
          // type method implementation goes here
     }
}

해당 방법에 액세스 :

SomeClass.someTypeMethod()

또는 신속하게 메소드를 참조 할 수 있습니다.


답변

선언 앞에 class클래스 인 static경우 또는 구조 인 경우를 추가합니다.

class MyClass : {

    class func aClassMethod() { ... }
    func anInstanceMethod()  { ... }
}


답변

Swift 1.1에는 저장된 클래스 속성이 없습니다. 클래스 객체에 연결된 관련 객체를 가져 오는 클로저 클래스 속성을 사용하여 구현할 수 있습니다. (NSObject에서 파생 된 클래스에서만 작동합니다.)

private var fooPropertyKey: Int = 0  // value is unimportant; we use var's address

class YourClass: SomeSubclassOfNSObject {

    class var foo: FooType? {  // Swift 1.1 doesn't have stored class properties; change when supported
        get {
            return objc_getAssociatedObject(self, &fooPropertyKey) as FooType?
        }
        set {
            objc_setAssociatedObject(self, &fooPropertyKey, newValue, objc_AssociationPolicy(OBJC_ASSOCIATION_RETAIN_NONATOMIC))
        }
    }

    ....
}


답변

선언 앞에 class 또는 static (함수 인 경우)을 추가하고 static (속성 인 경우)을 추가합니다.

class MyClass {

    class func aClassMethod() { ... }
    static func anInstanceMethod()  { ... }
    static var myArray : [String] = []
}


답변