关于ReactiveCocoa的RACObserve的一些研究

1.RACObserve可以用来观察一个NSMutableDictionary的setValue和remove吗?

可以

一个对象有一个property

@property(nonatomic,strong)NSMutableDictionary *testDict;

 

使用RACObserve进行观察

    [RACObserve(self, testDict) subscribeNext:^(id x) {

        NSLog(@"RACObserve testDict:%@ %p",x,x);

    }];

在对dict进行setValue或remove时

    [self.testDict setObject:value forKey:key];
    self.testDict=self.testDict;

即可.

2.可以RACObserve属性(property)的属性(property)吗?

可以

假设有个TestObject类

@interface TestObject : NSObject
@property(nonatomic,strong)NSString *aProperty;
@end

一个对象有一个该类对象的属性

@property(nonatomic,strong)TestObject *testObj;

可以这样使用

[RACObserve(self, testObj.aProperty) subscribeNext:^(id x) {
        NSLog(@"RACObserve testObj.aProperty %@",x);
    }];
情况如下:
  1.testObj变化时,总会发送信号
  2.testObj为nil时,为aProperty赋值无效,因此不会发送信号
  3.testObj不为nil时,aProperty变化时,会发送信号

2015-09-14 17:27:17追加
1
2
3
RACSignal *repeatSignal = [[RACSignal interval:1 onScheduler:[RACScheduler mainThreadScheduler]] takeWhileBlock:^BOOL(id x) {
            return shouldRepeat;
        }];

  

1
当shouldRepeat为NO时,将发送completed信号
posted @   ashamp  阅读(1632)  评论(1编辑  收藏  举报
编辑推荐:
· DeepSeek 解答了困扰我五年的技术问题
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
阅读排行:
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· PPT革命!DeepSeek+Kimi=N小时工作5分钟完成?
· What?废柴, 还在本地部署DeepSeek吗?Are you kidding?
· DeepSeek企业级部署实战指南:从服务器选型到Dify私有化落地
· 程序员转型AI:行业分析
点击右上角即可分享
微信分享提示