测试已测试 | ✗ |
Lang语言 | Obj-CObjective C |
许可证 | MIT |
发布最后发布 | 2017年1月 |
由 CoderXWChu--description=learning everyday 维护。
为 KVO 和 NSNotification 提供便捷方法。您不需要关心何时移除观察者。
使用 KVO 和 NSNotification 的便利方法,您不需要关心何时移除观察者/监听者。
[target dc_addObserverBlockForKeyPath:@"keypath" block:^(id _Nonnull __weak obj, id _Nullable oldVal, id _Nullable newVal) {
// obj == target
// oldVal : the old value of keypath
// newVal : the new value of keypath
// ...
}];
[target dc_addObserverBlockForNotificationName:@"aNotificationName" block:^(id _Nullable __weak obj, NSNotification * _Nonnull noti) {
// obj == noti.object
// noti : aNotification which name is 'aNotificationName'
// ...
}];
// 同一个观察者观察多个路径的操作
[targetOne dc_addObserverBlockForKeyPath:@"keypath1" block:^(id _Nonnull __weak obj, id _Nullable oldVal, id _Nullable newVal) {
// do something...
}];
[targetOne dc_addObserverBlockForKeyPath:@"keypath2" block:^(id _Nonnull __weak obj, id _Nullable oldVal, id _Nullable newVal) {
// do something...
}];
[targetOne dc_addObserverBlockForKeyPath:@"keypath3" block:^(id _Nonnull __weak obj, id _Nullable oldVal, id _Nullable newVal) {
// do something...
}];
// 同一个观察者观察多同一路径的多个操作
// KVO
[targetOne dc_addObserverBlockForKeyPath:@"keypath1" block:^(id _Nonnull __weak obj, id _Nullable oldVal, id _Nullable newVal) {
// do something...
}];
[targetOne dc_addObserverBlockForKeyPath:@"keypath1" block:^(id _Nonnull __weak obj, id _Nullable oldVal, id _Nullable newVal) {
// do another thing...
}];
// 同一个观察者监听同一通知的多个操作
// NSNotification
[targetOne dc_addObserverBlockForNotificationName:@"aNotificationName" block:^(id _Nullable __weak obj, NSNotification * _Nonnull noti) {
// do something...
}];
[targetOne dc_addObserverBlockForNotificationName:@"aNotificationName" block:^(id _Nullable __weak obj, NSNotification * _Nonnull noti) {
// do another thing...
}];
DCObserver 使用 MIT 许可证,详情见 LICENSE 文件。