gpt4 book ai didi

objective-c - Objective-C 中的 swift 类 : unknown receiver

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

我在 swift-file 中写了一个类:

class UtilityMethods {
class func userId() -> Integer {
...
}

class func setUserId(userId : Int) {
...
}
}

我正在导入编译良好的 -swift.h-header,但我不能使用

[UtilityMethods userId];

在我的 Objective-C 代码中:

未知的接收者“UtilityMethods”;您是说“UtilMethods”吗?

UtilMethods 是我想要替换的 Objective-C 类。我错过了什么吗?

编辑在 Lance 的帮助下,现在可以识别该类,但不幸的是,getter 方法不是,头文件如下所示:

SWIFT_CLASS("_TtC15...14UtilityMethods")
@interface UtilityMethods : NSObject
+ (void)setUserId:(NSInteger)userId;
- (instancetype)init OBJC_DESIGNATED_INITIALIZER;
@end

为什么 setter/getter 不见了?

最佳答案

为了让 Objective C 可以使用 Swift 类,您有两个选择:

选项 1:子类 NSObject(或其他一些 Objective C 类)

class UtilityMethods : NSObject {
class func userId() -> Int {
...
}

class func setUserId(userId: Int) {
...
}
}

选项 2:将 @objc 属性添加到您的类中,告诉 Swift 编译器生成一个使用动态调度而不是静态调度进行方法调用的 Objective C 对象

@objc class UtilityMethods {
class func userId() -> Int {
...
}

class func setUserId(userId: Int) {
...
}
}

关于objective-c - Objective-C 中的 swift 类 : unknown receiver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24250453/

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