Objective c 二进制表达式(Int和NSNumber*)的操作数无效

Objective c 二进制表达式(Int和NSNumber*)的操作数无效,objective-c,Objective C,我正在从CodeSchool学习objective C,学习OOP有一部分我不明白为什么它不起作用,但似乎很容易修复 守则: - (void) decreaseBatteryLife:(NSNumber *)decreaseBy { self.batteryLife = @([self.batteryLife intValue] - decreaseBy); } 指向前减号的误差减小为: ^invalid operands to binary expression ('int' and

我正在从CodeSchool学习objective C,学习OOP有一部分我不明白为什么它不起作用,但似乎很容易修复

守则:

- (void) decreaseBatteryLife:(NSNumber *)decreaseBy
{
    self.batteryLife = @([self.batteryLife intValue] - decreaseBy);
}
指向前减号的误差减小为:

^invalid operands to binary expression ('int' and 'NSNumber *')
decreaseBy
”是NSNumber对象,而另一个值是“
int
”。有一个区别(第一个是一个目标C对象,另一个是一个原始C类型)

您需要获取“
递减率”
”编号的原始“
intValue

大概是这样的:

self.batteryLife = @([self.batteryLife intValue] - [decreaseBy intValue]);

奇怪的是,如果你知道如何正确处理
电池寿命
,你怎么会不知道如何处理
减量
!非常感谢。您能否快速澄清obj-c是否使用以下两种格式来访问方法:[object method]object.method似乎我在学习obj-c时遇到了这两种格式。@user3746809您看到的是
[object method]
object.property
。没有
object.method
这样的东西。