将 'ClassName' 重新定义为生成的 header 中的不同种类的符号
Redefinition of 'ClassName' as different kind of symbol in generated header
我创建了一个 Swift 枚举作为 Int(因此它可以与 Objective-c 一起使用)。
当我构建项目时,一切都很好。但是,一旦我尝试在 .h 文件中导入 class(使用前向声明 @ClassName),生成的 header 文件就会出现 Redefinition of 'ClassName' as a different kind of symbol
错误
查看生成的 .h 文件,我可以看到它生成了如下新类型:
typedef SWIFT_ENUM(NSInteger, ClassName, closed) {
type1 = 1,
type2 = 2,
};
它在 ClassName 下划线表示它是 re-declared。但是,它在 header 文件中的其他地方不存在(进行搜索并且只出现一次)并且它只在 swift 文件中声明一次。
对正在发生的事情有什么建议吗?
枚举在 Objective-C 中不是 类,因此您需要在 .h
文件中使用 typedef
而不是前向声明:
typedef NS_ENUM(NSInteger, ClassName);
然后在.m
文件中,你需要导入Module-Swift.h
文件。
我创建了一个 Swift 枚举作为 Int(因此它可以与 Objective-c 一起使用)。
当我构建项目时,一切都很好。但是,一旦我尝试在 .h 文件中导入 class(使用前向声明 @ClassName),生成的 header 文件就会出现 Redefinition of 'ClassName' as a different kind of symbol
查看生成的 .h 文件,我可以看到它生成了如下新类型:
typedef SWIFT_ENUM(NSInteger, ClassName, closed) {
type1 = 1,
type2 = 2,
};
它在 ClassName 下划线表示它是 re-declared。但是,它在 header 文件中的其他地方不存在(进行搜索并且只出现一次)并且它只在 swift 文件中声明一次。
对正在发生的事情有什么建议吗?
枚举在 Objective-C 中不是 类,因此您需要在 .h
文件中使用 typedef
而不是前向声明:
typedef NS_ENUM(NSInteger, ClassName);
然后在.m
文件中,你需要导入Module-Swift.h
文件。