如何在Swift中调用Objective-C类别的方法
你如何在Swift中调用这样的Objective-C类别方法?
+(UIColor*)colorWithHexString:(NSString*)hex alpha:(float)alpha;
编译器会自动查找常见的ObjC命名模式,并将Swift模式replace为它们的位置。 一个返回类的实例的ObjC类方法(并且以某种方式命名,看起来像)变成了一个Swift方便的构造器。
如果您有ObjC方法(由自定义类别定义):
+ (UIColor *)colorWithHexString:(NSString *)hex alpha:(float)alpha;
编译器生成Swift声明:
convenience init(hexString: String?, alpha: CFloat)
你这样称呼它:
let color = UIColor(hexString: "#ffffff", alpha: 1.0)
在Swift 2.0或更高版本中,可以使用NS_SWIFT_NAME
macros将ObjC工厂方法与命名模式导入Swift不匹配作为初始值设定项。 例如:
@interface UIColor(Hex) + (UIColor *)hexColorWithString:(NSString *)string NS_SWIFT_NAME(init(hexString:)); @end // imports as extension UIColor { init(hexString: String) }