我有一个TyphoonAssembly的子类,它包含这个工厂方法:
+ (instancetype)assembly;
我试图在测试中使用它如下:
var assembly : ApplicationAssembly! = ApplicationAssembly.assembly()
但是得到错误' assembly()不可用' (见图)。
从Objective-C类方法创建Swift实例的正确方法是什么。
答案 0 :(得分:4)
当将代码从objective-C桥接到swift时,编译器会尝试将类方法构造函数转换为普通的初始化器。尝试只调用ApplicationAssembly()并查看它是否调用了您的类方法。您还可以更改类方法的名称,以便编译器不会将其识别为常见的构造函数命名。
以下是功能桥的示例:
// Objective-C
@implementation ApplicationAssembly
+ (instancetype)assemblyWithValue:(NSString *)value
{
ApplicationAssembly *new = [[self alloc] init];
new.value = @"Some_Value_To_Make_Sure_That_This_Code_Is_Running";
return new;
}
@end
// Swift
var assembly = ApplicationAssembly(value: "")
println(assembly.value) // outputs "Some_Value_To_Make_Sure_That_This_Code_Is_Running"
它不适用于您尝试访问的空类方法构造函数。