ReactiveCocoa 监听布尔(BOOL)类型改变
2018-12-20 14:27 菜鸟Alex 阅读(1209) 评论(0) 编辑 收藏 举报-
Oc中ReactiveCocoa 如何监听基本数据类型
-
借用Stack Overflow例子
-
如果监听detache 的改变
@interface Node : NSObject
@property (nonatomic, assign) BOOL detached;
@end
- 错误的实现方式如下:
@implementation Node
- (void)setParentNode:(Node *)parentNode {
_parentNode = parentNode;
RAC(self, detached) = [RACObserve(_parentNode, detached) filter:^BOOL(id value) {
return [value boolValue];
}];
}
@end
-
错误一: 尽量不要在setter方法中构造信号,因为有肯能get 或者 set 方法会被多次调用,有可能会引起内存泄漏或者其他(个人猜测)
-
正确方式如下(ReactiveCocoa主要贡献者的回答):
-
在init方法中进行监听
- (id)init {
self = [super init];
if (self == nil) return nil;
// Use @NO instead if that makes more sense as a default.
// @YES相当于设置默认为YES
RAC(self, detached, @YES) = [RACObserve(self, parentNode.detached) filter:^(NSNumber *detached) {
return [detached boolValue];
}];
return self;
}