KVC (Key -Value Coding)

参考文档: 《Cocoa Programming for Mac OS X 4》


键-值编码(Key-Value Coding,KVC)是通过变量名读取和设置变量值的一种机制,变量的名字是字符串,但是作为Key来使用。


例如

#import <Foundation/Foundation.h>


@interface Person : NSObject

{

    NSString *name;

}

@end

就可以使用如下来设置和获取类Person的实例成员变量 name.


    Person *p = [[Person alloc]init];

    //设置name

    [p setValue:@"newName" forKey:@"name"];

    //读取name

    NSString *newName =  [p valueForKey:@“name”];


接下来看看KVC在实际编码中的强大威力


绑定(binding)


Cocoa中很多图形对象都使用绑定,当开发者绑定一个键到一个图像对象的属性上时,例如绑定键(颜色)到图形的颜色,显示视图就会自动同步,接下来写一个小的Demo,来展示:


随意创建一个Cocoa程序,在AppDelegate.h中 添加 int类型的实例变量sliderNumber

#import <Cocoa/Cocoa.h>


@interface AppDelegate : NSObject <NSApplicationDelegate>

{

    int sliderNumber;

}

//然后使用accessor方法来设置和读取sliderNumber的值,

//此处不使用@property,更多内容后面将提到

- (int)sliderNumber;

- (void)setSliderNumber:(int)x;

@property (assign) IBOutlet NSWindow *window;

@end


在AppDelegate.m中则对accessor方法实现,并且给出值的打印

- (int)sliderNumber;

{

    NSLog(@"sliderNumber returned value is %d",sliderNumber);

    return sliderNumber;

}

- (void)setSliderNumber:(int)x;

{

    NSLog(@"setSliderNumber is called with %d",x);

    sliderNumber = x;

}


再打开MainMenu.xib拖一个滑动条到View上,并且对滑动条进行设置,如图所示



首先勾选上Control中的Continuous(为了让滑动条拖动的时候,数值一直改变,而不是停止了再获取数据)




然后勾选上Bind To App Delegate,下面的Model Key Path当然就是self.sliderNumber了



编译运行程序,滑动条使用 valueForKey来获取它的初始值,这触发了(sliderNumber方法),当滑动条移动式,调用setValue:forKey来更新sliderNumber的值(这就出发了 setSliderNumber方法)。看看控制台的输出吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值