我创建了一个 Swift 枚举作为 Int(因此它可以与 Objective-c 一起使用)。
当我构建项目时,一切都很好。但是,一旦我尝试将类导入到 .h 文件中(使用前向声明 @ClassName),生成的头文件就会出错,将“ClassName”重新定义为不同类型的符号
查看生成的 .h 文件,我可以看到它生成了新类型,如下所示:
typedef SWIFT_ENUM(NSInteger, ClassName, closed) {
type1 = 1,
type2 = 2,
};
它在 ClassName 下划线表示它已被重新声明。但是,它不存在于头文件中的其他位置(进行搜索,它只出现一次),并且只在 swift 文件中声明一次。
对正在发生的事情有什么建议吗?
最佳答案
枚举不是 Objective-C 中的类,因此您需要在 .h
文件中使用 typedef
而不是前向声明:
typedef NS_ENUM(NSInteger, ClassName);
然后在.m
文件中,需要导入Module-Swift.h
文件。
关于swift - 将 'ClassName' 重新定义为生成 header 中的不同类型符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68808688/