Person *zhangsan = [[Person alloc]init];
//通过set方法设置张三的名称
[zhangsan setName:@"zhangsan"];
//通过get方法获取张三的名称
NSString *name = [zhangsan name];
NSLog(@"%@",name);
//通过KVC来设置张三的名称
//设置张三的name字段的值为lisi
//参数1:为该字段设置的内容
//参数2:对象的字段名
[zhangsan setValue:@"lisi" forKey:@"name"];
//通过KVC来获取
//获取对象zhangsan中name字段的值
name = [zhangsan valueForKey:@"name"];
NSLog(@"%@",name);
//调用对象的私有方法
//没有在头文件中申明的方法
//[zhangsan performSelector:@selector(test) withObject:nil];
Dog *dog = [[Dog alloc]init];
[dog setValue:@"旺财" forKey:@"name"];
NSLog(@"dog.name=%@",[dog valueForKey:@"name"]);
//设置zhangsan的私有字段
[zhangsan setValue:dog forKey:@"dog"];
//设置张三的dog的名称
[zhangsan setValue:@"旺旺" forKeyPath:@"dog.name"];
//获取张三对象的私有字段dog对象里保存的name字段的值
NSLog(@"zhangsan.dog.name=%@",[zhangsan valueForKeyPath:@"dog.name"]);
//这个方法在当前控件的frame被修改了后主动调用
- (void)layoutSubviews
{
[super layoutSubviews];
_label.frame = self.bounds;
}