码迷,mamicode.com
首页 > 其他好文 > 详细

KVC && KVO 初见

时间:2014-11-25 20:15:47      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   sp   for   

bubuko.com,布布扣

Look,这是一个很简单的要求,点击Add me,age +1.

想一想的话很简单的,设置一个属性Nsinteger age,点击button add me,直接加1在重新显示Lable就好啦,不过,我们今天是来练习KVC和KVO的,苹果的键值编程哈哈

首先我们定义一个Human的类,并且完成了它的初始化方法

#import <Foundation/Foundation.h>

@interface human : NSObject

@property (nonatomic,assign) NSString *name;
@property (nonatomic,assign) NSInteger age;
-(id)initHuman:(NSString *)Initname hisage:(NSInteger) Initage;
@end
#import "human.h"

@implementation human
-(id)initHuman:(NSString *)Initname hisage:(NSInteger)Initage{
    if(self=[super init]){
        _name=Initname;
        _age=Initage;
       
    }
    return self;
}

@end

很普通很简单。。。

下面在ViewControler中调用该类,完成对这个人的年龄的增加

#import <UIKit/UIKit.h>
#import "human.h"
@interface ViewController : UIViewController<UIWebViewDelegate>
{
    human *keith;
}
@property (weak, nonatomic) IBOutlet UILabel *Infoshow;
- (IBAction)Addme:(id)sender;
@end
#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController
-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];   
    keith=[[human alloc]initHuman:@"keith" hisage:26];
    self.Infoshow.text=[NSString stringWithFormat:@"name is %@,age is %ld",keith.name,keith.age];
    [keith addObserver:self forKeyPath:@"age" options:NSKeyValueObservingOptionOld|NSKeyValueObservingOptionNew context:nil];//
}
- (IBAction)Addme:(id)sender {
    keith.age+=1;      
}
-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if ([keyPath isEqualToString:@"age"] && object==keith) {
          self.Infoshow.text=[NSString stringWithFormat:@"name is %@,age is %ld",keith.name,keith.age];//添加对keith keyPath的监视
    }
}
-(void)dealloc{
    [keith removeObserver:self forKeyPath:@"age"];//不用的时候移除注册
}

@end

可以看出如果通过这样的模式有个好处是能减少模型和视图的耦合关键,模型只管运算,视图的变化通过KVO监视键值的变化,自动更新。

KVC && KVO 初见

标签:style   blog   http   io   ar   color   os   sp   for   

原文地址:http://www.cnblogs.com/keithmoring/p/4121555.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!