Skip to content

cockscomb/CXCKeyValueObserver

Repository files navigation

CXCKeyValueObserver

Overview

CXCKeyValueObserver is wrapping Key Value Observation (KVO) for convenience. The KVO is a super powerful mechanism in the Objective-C. However, it's little confusing. So CXCKeyValueObserver is trying to solve that problem.

Requirements

  • ARC

Usage

For example, an implementation using KVO in some ViewController.

Traditional implementation

@implementation XXViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    [self.someObject addObserver:self forKeyPath:@"example" options:NSKeyValueObservingOptionNew context:NULL];
}

- (void)dealloc
{
    [self.someObject removeObserver:self forKayPath:@"example"];
}

- (void)observeValueForKeyPath:(NSString *)keyPath
                      ofObject:(id)object
                        change:(NSDictionary *)change
                       context:(void *)context
{
    if (object == self.someObject) {
        if ([keyPath isEqualToString:@"example"]) {
            // do something
        }
    }
}

@end

New implementation

@implementation XXViewController {
    CXCKeyValueObserver *_observer;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    _observer = [[CXCKeyValueObserver alloc]
                     initWithObservee:self.someObject
                           forKeyPath:@"example"
                              options:NSKeyValueObservingOptionNew
                                block:^(id observee, NSString *keyPath, NSDictionary *change) {
                                    // do something
                                }];
}

@end

That's all. It is easy to use with declaratory interface. CXCKeyValueObserver will call its block when observed key path value is changed, and it's automatically removed as observer when deallocated.

Install

Use CocoaPods,

pod 'CXCKeyValueObserver', :git => 'https://github.com/cockscomb/CXCKeyValueObserver.git'

License

MIT.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Packages

No packages published