IOS:performSelector:withObject:行为怪异

时间:2014-04-30 10:13:01

标签: ios objective-c

我的应用结果无法加载某些内容。我很惊讶,我发现那个错误就是那个

[contentItem performSelector:@selector(setIsContainer:) withObject:[NSNumber numberWithBool:true]];

正在将" False" 传递给该方法,而不是" True"

对此有任何解释吗?或者,作为一种良好做法,我应该避免使用performSelector

(我向同事询问他们的手机,并且我使用相同iPhone5s版本的同一iOS,其中所有3个一切正常,但老板手机除外

1 个答案:

答案 0 :(得分:4)

您正在将NSNumber对象传递给期望BOOL原语的方法。它应该在每个版本的iOS上失败。

将实施更改为:

- (void)setIsContainer:(NSNumber *)isContainer {
    _isContainer = [isContainer boolValue];
}

(如果您需要原始语义,那么您必须提供替代版本;一个用于NSNumber,另一个用于BOOL)。