//
|
// NSObject+YYAddForKVO.h
|
// YYCategories <https://github.com/ibireme/YYCategories>
|
//
|
// Created by ibireme on 14/10/15.
|
// Copyright (c) 2015 ibireme.
|
//
|
// This source code is licensed under the MIT-style license found in the
|
// LICENSE file in the root directory of this source tree.
|
//
|
|
#import <Foundation/Foundation.h>
|
|
NS_ASSUME_NONNULL_BEGIN
|
|
/**
|
Observer with block (KVO).
|
*/
|
@interface NSObject (YYAddForKVO)
|
|
/**
|
Registers a block to receive KVO notifications for the specified key-path
|
relative to the receiver.
|
|
@discussion The block and block captured objects are retained. Call
|
`removeObserverBlocksForKeyPath:` or `removeObserverBlocks` to release.
|
|
@param keyPath The key path, relative to the receiver, of the property to
|
observe. This value must not be nil.
|
|
@param block The block to register for KVO notifications.
|
*/
|
- (void)addObserverBlockForKeyPath:(NSString*)keyPath
|
block:(void (^)(id _Nonnull obj, id _Nonnull oldVal, id _Nonnull newVal))block;
|
|
/**
|
Stops all blocks (associated by `addObserverBlockForKeyPath:block:`) from
|
receiving change notifications for the property specified by a given key-path
|
relative to the receiver, and release these blocks.
|
|
@param keyPath A key-path, relative to the receiver, for which blocks is
|
registered to receive KVO change notifications.
|
*/
|
- (void)removeObserverBlocksForKeyPath:(NSString*)keyPath;
|
|
/**
|
Stops all blocks (associated by `addObserverBlockForKeyPath:block:`) from
|
receiving change notifications, and release these blocks.
|
*/
|
- (void)removeObserverBlocks;
|
|
@end
|
|
NS_ASSUME_NONNULL_END
|