Objective C decodeBoolForKey与BOOL不兼容

时间:2014-01-19 06:46:30

标签: objective-c pointers boolean nscoding

所以我有一个实现NSCoding的NSObject。在我的解码器方法中,它需要检索属于该类的BOOL以及其他属性。

-(id)initWithCoder:(NSCoder *)decoder {
    self = [super init];
    if (self) {
        [self setRandomObject:[decoder decodeObjectForKey:@"randomObjectKey"]];
        [self setMyBool:[decoder decodeBoolForKey:@"myBoolKey"]];
    }
    return self;
}

然而,这会在[self setMyBool ...的行上发出以下警告(黄色警告,仍然可以运行)。

Incompatible integer to pointer conversion sending 'BOOL' (aka 'signed char') to parameter of type 'BOOL *' (aka 'signed char *')

我不明白为什么它试图将bool的指针发送给bool。如果有人知道如何解决这个问题,请告诉我!非常感谢。


另外,现在已经很晚了,我很累,我可能只是错过了一些简单的东西,所以请耐心等待。

2 个答案:

答案 0 :(得分:2)

你的方法看起来像这样吗?

- (void)setMyBool:(BOOL *)value
or:
@property BOOL *myBool;

因为它应该是:

- (void)setMyBool:(BOOL)value
or:
@property BOOL myBool;

答案 1 :(得分:0)

所以看来我不小心将该属性声明为BOOL *而不是BOOL。我改变了它,现在一切正常。在阅读了评论和答案后,我认为方法是正确的,然后查看了属性的声明。非常感谢,深夜编码比我想象的要难。