//
// main.m
// KVC一
//
// Created by Goddog on 15/1/3.
// Copyright (c) 2015年 Goddog. All rights reserved.
//
/*
1.我们可以通过setter和getter方法来设置和修改对象的属性,同时也可以通过键值编码(KVC)来操作对象属性。
2.何为KVC:以字符串的形式间接的操作对象的属性。
设置值用 setValue:属性值 forKey:属性名
获取值用 valueForKey:属性名
*/
#import <Foundation/Foundation.h>
//接口部分
@interface User : NSObject
//没有实现setter和getter方法的成员变量,没实现啊
{
@package
NSString* size;
NSString* _size;
}
//实现类setter和getter方法的成员变量
@property (nonatomic,copy) NSString* name;
@property (nonatomic,copy) NSString* pass;
@property (nonatomic,copy) NSData* birth;
@end
//实现部分
@implementation User
//定义类age成员变量
{
int age;
}
@end
//测试部分
int main(int argc, const char * argv[]) {
@autoreleasepool {
//创建对象
User* user = [[User alloc] init];
//使用KVC方式设置值
[user setValue:@"HUXU" forKey:@"name"];
[user setValue:@"123" forKey:@"pass"];
[user setValue:[[NSData alloc] init] forKey:@"birth"];
//使用KVC方式获取值
NSLog(@"姓名:%@,密码:%@,",[user valueForKey:@"name"],[user valueForKey:@"pass"]);
NSLog(@"年龄:%@",[user valueForKey:@"birth"]);
//---------------------------------------------
//使用KVC方式为size属性赋值,KVC的搜索顺序为:setSize:方法、_size成员变量、size成员变量。
[user setValue:@"big" forKey:@"size"];
//访问name和_name两个成员变量的值
NSLog(@"size成员变量的值是:%@, _size成员变量的值是:%@",user->size,user->_size);
//使用KVC方式对age赋值,将会导致类实现部分定义的age成员变量被赋值
[user setValue:[NSNumber numberWithInt:10] forKey:@"age"];
//访问实现部分的成员变量
NSLog(@"age的值是:%@",[user valueForKey:@"age"]);
}
return 0;
}