//创建Person 对象

        Person *per = [[Person alloc] initWithName:@"张三" sex:@"男" age:@21];

                       

        //setter getter

        [per setName:@"达芬奇"];

        [per setSex:@"?"];

        [per setAge:@123];

        NSLog(@"%@",per);

        

        //创建Teacher 对象

        Teacher *teacher = [[Teacher alloc] initWithName:@"蛋蛋" sex:@"?" age:23 number:@354];

        NSLog(@"%@ %@ %ld",[teacher name],[teacher sex],[teacher age]);

        

        //创建Student 对象

        Student *stu = [Student studentWithName:@"小明" sex:@"男" age:23 number:@138];

        //使用点语法

        stu.sex = @"妹子";

        stu.age = 24;

        NSLog(@"%@ %@ %ld %@",stu.name,stu.sex,stu.age,stu.number);

        

        

        //KVC

        Student *stu = [[Student alloc] init];

        

        //使用KVC 强制访问stu的实例变量

        [stu setValue:@"蛋蛋" forKey:@"_name"];

        NSLog(@"%@",stu.name);

        [stu setValue:@"女" forKey:@"_sex"];

        NSLog(@"%@",[stu valueForKey:@"_sex"]);

        

        //如果没有对应的实例变量

        //通过KVC 设置值 需要重写setValue:forUndefinedKey:

        [stu setValue:@180 forKey:@"_weight"];

        //通过KVC 取值 需要重写valueForUndefinedKey:

        NSLog(@"%@",[stu valueForKey:@"_weight"]);

        

        

        //通过字典给我们的对象实例变量赋值

        NSDictionary *dataDic = [[NSDictionary alloc] initWithObjectsAndKeys:@"金鹏",@"name",@"男",@"sex",@1002,@"number",@"180",@"wei",nil];

        NSLog(@"%@",dataDic);

        

        [stu setValuesForKeysWithDictionary:dataDic];

        [stu sayHi];

        NSLog(@"%@",stu.number);

        

        //创建Teacher 对象

        //给学生中老师实例变量 的实例变量name赋值

        stu.teacher = [[Teacher alloc] init];

        [stu setValue:@"西兰花" forKeyPath:@"teacher.name"];

        

        NSLog(@"%@",[stu valueForKeyPath:@"teacher.name"]);

 

posted on 2015-05-25 09:49  hanry  阅读(135)  评论(0)    收藏  举报