ReactiveCocoa 监听布尔(BOOL)类型改变

  • Oc中ReactiveCocoa 如何监听基本数据类型
  • 借用Stack Overflow例子atom

  • 若是监听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 方法会被屡次调用,有可能会引发内存泄漏或者其余(我的猜想)code

  • 正确方式以下(ReactiveCocoa主要贡献者的回答):
  • 在init方法中进行监听blog

- (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;
}

原文连接内存

相关文章
相关标签/搜索