这可能是我的试验错误,但我有点困惑,为什么这不返回一个int (因为这是由键路径标识的属性类型)。Does :返回一个对象,有人能解释吗?
// Simple Object
@interface Hopper : NSObject
@property(nonatomic, assign) int mass;
@end
// Test
Hopper *hopper = [[Hopper alloc] init];
[hopper setMass:67];
NSLog(@"HOPPER: %d", [hopper valueForKeyPath:@"mass"]);。
WARNING: Conversion specifies type 'int' but the argument has type 'id'发布于 2012-04-20 18:12:28
是的,它返回一个objc对象:
- (id)valueForKeyPath:(NSString *)keyPath;有关从非objc对象到objc对象(例如NSNumber和NSValue)的自动转换的详细信息,请参阅Accessor Search Patterns for Simple Attributes。
因此,您将使用objc对象格式说明符%@
NSLog(@"HOPPER: %@", [hopper valueForKeyPath:@"mass"]);发布于 2012-04-20 18:12:19
valueForKeyPath返回一个对象。int和char类型不是对象。属性访问该属性。运算符或类似的。
NSLog(@"HOPPER: %d", [hopper mass]);
NSLog(@"HOPPER: %d", hopper.mass);编辑:未完全阅读示例代码,已更新答案
https://stackoverflow.com/questions/10244210
复制相似问题