BOOL 与 Swift 4.1 中的 Bool 不兼容

BOOL is incompatible with Bool in Swift 4.1

当覆盖 Objective-C class 的 Swift 子 class 时,我收到一条消息说:

Property type 'BOOL' (aka 'bool') is incompatible with type 'Boolean' (aka 'unsigned char') inherited from 'ChildClass'

我尝试使用其他布尔类型,但它不起作用。

知道如何在 Swift

中正确覆盖 Objc BOOL

Swift代码(subclass):

override var myVar: Bool {
    get {
        return something ? true : myVar
    }
    set {
        myVar = newValue
    }
}

对象父声明:

@property(atomic) Boolean isLoading;

Swift 出现警告的桥接头:

SWIFT_CLASS("_TtC6Module30ChildClass")
@interface ChildClass : ParentClass
@property (nonatomic) BOOL myVar; //<----- Here 
@end

在 ObjC 中,BOOL 和 bool 是不同的(BOOL 是一个带符号的字符,而 bool - 又名 C bool- 是一个无符号字符)。 Boolean 也是 unsigned char 的 typedef,C bool 也是如此。 你能把你的 objC 属性 改成 BOOL 吗? 如果不是,则使用 swift 类型 'CBool'.

https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html