RACObserve subscribeNext 在观察项的值发生变化时没有执行?

RACObserve subscribeNext didn't execute when value of the observed item changed?

大家好我有一个奇怪的问题,我把这段代码放在我的绑定方法中:

[RACObserve(self.viewModel,contacts) subscribeNext:^(id x) {
    [self.contactsTableView reloadData];
}];

但是当我的 viewModel 中的联系人更改时,subscribeNext 没有执行!! ,我通过调试检查了值是否改变并且它改变正常!

这是我的视图模型(简体)中更改值的地方:
我在这里初始化它:

- (instancetype)init {

    self.contacts = [[NSMutableArray <Contact *> alloc]init];

}

并在此处更改

  #pragma mark - load and filter methods
    - (RACCommand *)loadContactsCommand {
        ContactsNetworkManager *contactNetworkManager = [ContactsNetworkManager sharedManager];
        return [[RACCommand alloc] initWithSignalBlock:^RACSignal *(id input) {
            return [[contactNetworkManager getAllContactsSignal] map:^id(NSMutableArray<Contact *> * value) {
                NSSortDescriptor *descriptor = [[NSSortDescriptor alloc] initWithKey:@"firstName" ascending:YES];
                [value sortUsingDescriptors:[NSArray arrayWithObject:descriptor]];
                [_contacts removeAllObjects];
                [_contacts arrayByAddingObjectsFromArray:value];
                return value;
            }];
        }];
    }

    #pragma mark - Actions
    - (void)loadContacts {
        [self.loadContactsCommand execute:nil];

    }
    @end

找到了,其实解决方法太简单了,我不得不使用self而不是像_那样对NSMutableArray对象进行独立引用。换句话说,如果你这样做,它不会工作,因为 RACObserve() 建立的 KVO 是相对于你作为它的第一个参数传入的对象(在本例中为 self),所以只有符合 KVC 的突变通过通过被观察对象会触发观察通知