Как создать класс методы/свойства в Swift?

Класс (или статические) методы в Objective-C были выполнены с использованием + в объявлениях.

@interface MyClass : NSObject

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

@end

Как это можно сделать в Swift?

Ответ 1

Они называются свойствами типа и методами типа и вы используете ключевые слова 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

Ответ 2

Они называются свойствами типа и типами методов в Swift, и вы используете ключевое слово класса.
Объявление метода класса или метода типа в быстром режиме:

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

Доступ к этому методу:

SomeClass.someTypeMethod()

или вы можете ссылаться Способы в быстром

Ответ 3

Подготовьте объявление с помощью class, если это класс, или с static, если это структура.

class MyClass : {

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

Ответ 4

Swift 1.1 не сохраняет сохраненные свойства класса. Вы можете реализовать его, используя свойство класса закрытия, которое получает связанный объект, привязанный к объекту класса. (Работает только в классах, полученных из NSObject.)

private var fooPropertyKey: Int = 0  // value is unimportant; we use var 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))
        }
    }

    ....
}

Ответ 5

Подготовить декларацию классом или статикой, если это функция, или со статическими, если это свойство.

class MyClass {

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