我正在尝试使用 big nerd 牧场书自学 Objective-c,这是一本非常棒的书,但某些方面让我感到困惑。
当前章节正在讨论使用 setValue:forKey 函数,我理解它是 NSObject 中定义的方法。这本书说你可以在像int或float这样的ac原语上使用它,并给出了这个例子
我有一个名为Appliance的自定义类,其中有一个名为 voltage 的整数实例变量,用于存储当前设备的电压 我初始化了一个名为 a 的新设备
appliance *a = [[appliance alloc]init];
[a setValue:[NSNumber numberWithInt:240] forKey:@"voltage"];
然后,他为电压设置了一个自定义设置器,并在调用时记录电压以证明它有效
-(void)setVoltage:int(x) {
NSLog(@"setting voltage to %d",x);
voltage =x;
}
让我困惑的是 NSNumber numberWithInt 返回一个指向存储在堆上的 NSNumber 对象的指针是否正确?那么他如何使用 %d 令牌记录存储在 NSNumber 中的整数。我知道这会记录一个整数,但不是传入的对象?此外,我认为由于电压被定义为整数而不是指向某物的指针,因此它不能将地址保存到内存中的对象?还是 NSNumber 是一种强制它保持其内存地址而不实际将电压声明为指针的方式?
很抱歉这一章让我很困惑。