Objective-C setValue:forKey在c原始类型上
我正在尝试用自己的大书呆子书教我自己的Objective-C,这是一本很棒的书,但某些方面让我很混淆.
本章正在谈论使用setValue:forKey函数,我理解的是在NSObject中定义的一种方法.这本书说,你可以使用这个c原语,如int或float,并给出这个例子 我有一个名为Appliance的自定义类,它是一个称为电压的整数实例变量,用于存储当前设备的电压 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类型强制它保持其内存地址,而实际上没有将电压声明为指针? 不好意思,本章基本上踢了我的屁股. 解决方法
对象和标量类型之间的转换由Key-Value Coding方法自动处理.从
documentation:
所以在你的情况下,intValue将自动应用于传递的NSNumber对象,并将生成的整数传递给setVoltage:. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |