在Objective-c语言中,可以用@property和@synthesize来创建实例变量的属性,因此对象访问的时候可以直接使用点语法。
但是,如果不声明属性,如何访问到对象的实例变量呢?KVC就解决了这一问题。
KVC 全称Key-Value-Coding,也就是键值编码。先看下面一个例子:
@interface Student : NSObject
{
NSString* name;
}
-(NSString*)description;
@end
@implementation Student
-(NSString*)description
{
return [NSString stringWithFormat:@"%@",name];
}
@end
int main(int argv,const char* argc[ ])
{
@autoreleasePool{
Student* student = [[Student alloc] init];
[student setValue:@"zhangsan" forKey:@"name"];//这里用到的KVC,每个从NSObject继承而来的类都继承了-(void)setValue:(id) forKey:@"实例变量"