programing

스위프트에서 클래스 메소드/프로퍼티를 만들려면 어떻게 해야 합니까?

goodsources 2023. 10. 8. 09:50
반응형

스위프트에서 클래스 메소드/프로퍼티를 만들려면 어떻게 해야 합니까?

Objective-C의 클래스(또는 정적) 방법은 다음을 사용하여 수행되었습니다.+선언에 의하여

@interface MyClass : NSObject

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

@end

스위프트에서 이것을 어떻게 달성할 수 있습니까?

유형 속성 및 유형 메서드라고 하며 사용합니다.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에서 type property 및 type 메서드라고 하며 class 키워드를 사용합니다.
클래스 메서드 또는 Type 메서드를 신속하게 선언합니다.

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

이 메서드에 액세스하는 방법:

SomeClass.someTypeMethod()

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

선언문 앞에 다음을 추가합니다.class수업이든, 아니면 함께든.static그것이 구조물이라면.

class MyClass : {

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

Swift 1.1에는 저장된 클래스 속성이 없습니다.클래스 객체에 연결된 연관 객체를 가져오는 Closure 클래스 속성을 사용하여 구현할 수 있습니다. (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 MyClass {

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

언급URL : https://stackoverflow.com/questions/24087936/how-do-i-make-class-methods-properties-in-swift

반응형