如何在 Swift 中调用这样的 Objective-C 类别方法?
+(UIColor*)colorWithHexString:(NSString*)hex alpha:(float)alpha;
最佳答案
编译器会自动查找常见的 ObjC 命名模式,并用 Swift 模式替换它们。返回类实例的 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
宏将与命名模式不匹配的 ObjC 工厂方法作为初始化程序导入到 Swift 中。例如:
@interface UIColor(Hex)
+ (UIColor *)hexColorWithString:(NSString *)string
NS_SWIFT_NAME(init(hexString:));
@end
// imports as
extension UIColor {
init(hexString: String)
}
关于ios - 如何在 Swift 中调用 Objective-C 类别方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24006264/