我有一个混合项目,遇到了一个有趣的问题。有一个枚举,在 obj-c 中定义
typedef NS_ENUM (NSUInteger, ABCCategory) {
ABCCategoryFirst,
ABCCategorySecond
};
接下来,有一个 swift 文件,其中定义了扩展名
extension ABCCategory: RawRepresentable {
public typealias RawValue = String
public init(rawValue: RawValue) {
switch rawValue {
case "first":
self = .first
case "second":
self = .second
default:
self = .first
}
}
public var rawValue: RawValue {
get {
switch self {
case .first:
return "first"
case .second:
return "second"
}
}
}
}
在 Debug 配置中一切正常,但是当我切换到 Release 时它不会构建,说:'rawValue' 的重新声明无效 我尝试删除 typealias,用 String 替换 RawValue(因此协议可以隐式猜测值),使构造函数在协议中是可选的(并且隐式展开的可选) - 不行。
我确实理解用字符串扩展 Int 枚举有点奇怪,但为什么它停止在 Release 中构建并在 Debug 中绝对完美地工作?
是否有一些不同的机制来处理发布配置的枚举/类/扩展?