我有一个TyphoonAssembly的子类,它包含这个工厂方法:
+ (instancetype)assembly;
Run Code Online (Sandbox Code Playgroud)
我试图在测试中使用它如下:
var assembly : ApplicationAssembly! = ApplicationAssembly.assembly()
Run Code Online (Sandbox Code Playgroud)
但得到错误'assembly()不可用'(见图).
从objective-C类方法创建Swift实例的正确方法是什么.

当将代码从 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"
Run Code Online (Sandbox Code Playgroud)
它不适用于您尝试访问的空类方法构造函数。
| 归档时间: |
|
| 查看次数: |
2902 次 |
| 最近记录: |