爲什麼這個代碼工作正常:KVC奇怪的行爲
NSArray* arr = @[[CALayer layer], [CALayer layer]];
NSString *sumKeyPath = @"@sum.bounds.size.width";
CGFloat totalSize = [[arr valueForKeyPath:sumKeyPath] floatValue];
但這個代碼給錯誤:
NSArray* arr = @[[UIImage imageNamed:@"img1"], [UIImage imageNamed:@"img2"]];
NSString *sumKeyPath = @"@sum.size.width";
CGFloat totalSize = [[arr valueForKeyPath:sumKeyPath] floatValue];
錯誤: [NSConcreteValue valueForUndefinedKey:]:此類不是密鑰值符合密鑰寬度的編碼。
NSArray* arr = @[[UIView new], [UIView new]];
NSString *sumKeyPath = @"@sum.bounds.size.width";
CGFloat totalSize = [[arr valueForKeyPath:sumKeyPath] floatValue];
給予同樣的錯誤
有什麼區別? bounds-不是NSObject,size-不是NSObject。爲什麼第一個代碼工作正常第一種情況下的尺寸與第二種情況下的尺寸相同。 – Sk0prion 2013-03-27 11:21:46
查看@ martin的回答。 'CALayer'在'valueForKeyPath:'(有時)中做了很多聰明的事情。 – 2013-03-27 12:17:18