KVO(键值监听模式)

来源:互联网 发布:手机动漫配音软件 编辑:程序博客网 时间:2024/05/31 11:03

//当一个类中的值改变的时候,执行另外一个类的方法


//  MyClass1.h

#import<Foundation/Foundation.h>


@interface MyClass1 :NSObject

{

    NSString *value;

}


@property (nonatomic,copy)NSString *value;


@end


//  MyClass1.m

#import"MyClass1.h"


@implementation MyClass1


@synthesize value;


@end


//  MyClass2.h

#import<Foundation/Foundation.h>


@interface MyClass2 :NSObject


@end


//  MyClass2.m

#import"MyClass2.h"


@implementation MyClass2


- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{

    

    

   NSLog(@"I heard about the change");

}

@end


//main.m

#import<Foundation/Foundation.h>

#import"MyClass1.h"

#import"MyClass2.h"



int main (int argc,const char * argv[])

{


   @autoreleasepool {

        MyClass1 *object1 = [[MyClass1 alloc] init];

        MyClass2 *object2 = [[MyClass2 alloc] init];

        

        //KVO注册

        [object1addObserver:object2 forKeyPath:@"value"options:0context:nil];

       //使用KVO方式改变值

        object1.value =@"Hello,world!";

       //结果object2's observeValue:ForKeyPath被调用

    }

    return 0;

}


































原创粉丝点击