gpt4 book ai didi

objective-c - 从 Objective-C 工厂方法创建 Swift 实例

转载 作者:搜寻专家 更新时间:2023-10-30 22:14:31 24 4
gpt4 key购买 nike

我有一个 TyphoonAssembly 的子类,其中包含这个工厂方法:

+ (instancetype)assembly;

我正尝试在测试中使用它,如下所示:

var assembly : ApplicationAssembly! = ApplicationAssembly.assembly()

但是出现错误“assembly() 不可用”(见图)。

从 Objective-C 类方法创建 Swift 实例的正确方法是什么。

enter image description here

最佳答案

当将代码从 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"

它不适用于您尝试访问的空类方法构造函数。

关于objective-c - 从 Objective-C 工厂方法创建 Swift 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24093693/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com