BOOL与Swift 4.1中的Bool不兼容

时间:2018-03-30 07:12:26

标签: objective-c swift swift4.1

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

  

物业类型' BOOL' (又名' bool')与类型'布尔'不兼容(又名' unsigned char')继承自' ChildClass'

我尝试使用其他布尔类型,但它无法工作。

知道如何正确覆盖Swift中的Objc BOOL

Swift代码(子类):

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

Objc家长声明:

@property(atomic) Boolean isLoading;

警告出现的Swift桥接标题:

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

1 个答案:

答案 0 :(得分:1)

在ObjC中的

BOOL和bool不一样(BOOL是一个有符号的char,而bool - 又名C bool-是一个unsigned char)。 Boolean也是unsigned char的typedef,因此是一个C bool。 你能将你的objC属性改为BOOL吗? 如果没有,那么使用swift类型&#39; CBool​​&#39;

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