code

Swift에서 클래스 레벨 함수를 어떻게 선언합니까?

codestyles 2020. 11. 26. 08:17
반응형

Swift에서 클래스 레벨 함수를 어떻게 선언합니까?


문서에서 찾을 수없는 것 같고 기본 Swift에 있는지 궁금합니다. 예를 들어 다음 NSTimer과 같이 클래스 수준 함수를 호출 할 수 있습니다 .

NSTimer.scheduledTimerWithTimeInterval(0.2, target: self, selector: "someSelector:", userInfo: "someData", repeats: true)

하지만 다음과 같이 호출 할 수 있도록 사용자 지정 개체로 수행하는 방법을 찾을 수없는 것 같습니다.

MyCustomObject.someClassLevelFunction("someArg")

이제 Objective-C와 Swift를 혼합 할 수 있다는 것을 알고 있으며 NSTimer클래스 메서드가 상호 운용성에서 남은 부분 일 수 있습니다.

질문

  1. Swift에 클래스 레벨 함수가 있습니까?

  2. 그렇다면 Swift에서 클래스 레벨 함수를 어떻게 정의합니까?


예, 다음과 같은 클래스 함수를 만들 수 있습니다.

class func someTypeMethod() {
    //body
}

Swift에서는 Type 메서드라고합니다.


다음을 사용하여 클래스 내에서 Type 메서드를 정의 할 수 있습니다.

class Foo {
    class func Bar() -> String {
        return "Bar"
    }
}

그런 다음 클래스 이름에서 액세스합니다.

Foo.Bar()

Swift 2.0에서는 static하위 클래스가 메서드를 재정의하는 것을 방지 하는 키워드를 사용할 수 있습니다 . class하위 클래스를 재정의 할 수 있습니다.


업데이트 : @Logan 덕분에

Xcode 6 베타 5 static에서는 구조체에는 class키워드를, 클래스 에는 키워드를 사용해야 합니다 .

class Foo {
    class func Bar() -> String {
        return "Bar"
    }
}

struct Foo2 {
    static func Bar2() -> String {
        return "Bar2"
    }
}

로부터 공식 스위프트 2.1 문서 :

메서드의 func 키워드 앞에 static 키워드를 작성하여 형식 메서드를 나타냅니다. 클래스는 또한 클래스 키워드를 사용하여 하위 클래스가 해당 메서드의 수퍼 클래스 구현을 재정의 할 수 있습니다.

구조체에서를 사용 static하여 Type 메서드를 정의 해야합니다 . 클래스의 경우 메서드가 하위 클래스에 의해 재정의되도록 허용할지 여부에 따라 static또는 class키워드를 사용할 수 있습니다 .


클래스에서 메소드를 정의해야합니다.

 class MyClass 
 {
       class func myString() -> String
       {
           return "Welcome"
       }
}

이제 클래스 이름을 사용하여 액세스 할 수 있습니다. 예 :

   MyClass.myString()

"환영합니다"가됩니다.

참고 URL : https://stackoverflow.com/questions/24008011/how-do-i-declare-a-class-level-function-in-swift

반응형