我正在尝试在我的应用中实施KVOController
。我设法让它在自定义UISliders
上运行,但我似乎无法使用自定义NSObject
。这是对象:
Restaurant.h
#import <UIKit/UIKit.h>
@interface Restaurant : NSObject
@property (nonatomic, copy, readonly) NSString *name, *tagline;
@property (nonatomic, copy, readonly) UIColor *uicolor;
- (id)initWithName:(NSString *)main;
- (void)setName:(NSString *)title;
- (void)changeColor:(UIColor)color;
@end
Restaurant.m
@implementation Restaurant
- (id)initWithName:(NSString *)main {
self = [super init];
if (self)
{
_name = main;
}
return self;
}
- (void)setName:(NSString *)title {
_name = title;
}
- (void)changeColor:(UIColor)color {
_uicolor = color;
}
@end
所以,我在我的代码中引入了这个监听器:
- (void)viewDidLoad {
[super viewDidLoad];
self.restaurant = [[Restaurant alloc] initWithName:@"test"];
[self.restaurant changeColor:[UIColor blueColor]];
FBKVOController *KVOController = [FBKVOController controllerWithObserver:self];
self.KVOController = KVOController;
[self.KVOController observe:self.restaurant keyPath:@"name" options:NSKeyValueObservingOptionInitial|NSKeyValueObservingOptionNew block:^(id observer, id object, NSDictionary *change) {
NSLog(@"Restaurant changed!");
}];
}
- (void)someOtherMethod:(id)sender {
[self.restaurant setName:@"Another test"];
[self.restaurant changeColor:[UIColor redColor]];
}
但是,这不会记录任何内容,也不会将keyPath
更改为@"uicolor"
。我做错了什么?