Подтвердить что ты не робот

Функция класса в быстром расширении (категории)

Можно ли определить функцию класса в расширении в swift, как и в категории objective-C, вы также можете определить функции класса?

Пример в objective-c

@implementation UIColor (Additions)

+ (UIColor)colorWithHexString:(NSString *)hexString
{
    // create color from string
    // ... some code
    return newColor;
}

@end

что было бы эквивалентно в swift?

4b9b3361

Ответ 1

Да, это возможно и очень похоже, главное отличие в том, что расширения Swift не называются.

extension UIColor {
    class func colorWithHexString(hexString: String) -> UIColor {
        // create color from string
        // ... some code
        return newColor
    }
}

Ответ 2

Для записи. Вот код для решения выше:

import UIKit

extension UIColor {
    convenience init(hexString:String) {

        // some code to parse the hex string
        let red = 0.0
        let green = 0.0
        let blue = 0.0
        let alpha = 1.0

        self.init(red:red, green:green, blue:blue, alpha:alpha)
    }
}

Теперь я могу использовать:

скор:

let clr:UIColor = UIColor(hexString:"000000")

и теоретически я должен иметь возможность использовать в objective-c:

UIColor *clr = [UIColor colorWithHexString:@"000000"];