gpt4 book ai didi

ios - ReactiveCocoa 的 RACObserve 是不是要替换属性的 set 方法?

转载 作者:行者123 更新时间:2023-11-28 19:58:11 26 4
gpt4 key购买 nike

创建一个类的实例之后。我通过 RAC 宏绑定(bind)一些属性。

_theTable = [[ScrollableTable alloc] initWithFrame:CGRectMake(0, 0, 1024, 768)];
[_theTable setScrollEnabled:YES];
[_theTable setBounces:YES];
[_theTable setBackgroundColor:[UIColor whiteColor]];
[_theTable setShowsVerticalScrollIndicator:YES];
[_theTable setShowsHorizontalScrollIndicator:YES];
[self.view addSubview:_theTable];

RAC(self.theTable, dataVO) = RACObserve(self.tableVM, tableDataVO);
RAC(self.theTable, styleVO) = RACObserve(self.tableVM, tableStyleVO);

在 ScrollableTable 中,当 self.dataVO 和 self.styleVO 发生变化时,我尝试使用 RACObserve 宏来监听一些事件。当观察者第一次发出时,VO 是空的。所以我想知道使用 ReactiveCocoa 的正确方法是什么?

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
_isSeperateFill = YES;
_isBorderStroke = NO;
_isSeperatedStroke = YES;

_contentWidth = 0;

@weakify(self);
[RACObserve(self, dataVO) subscribeNext:^(TableDataVO* dataVO){
if( dataVO ){
NSString* indexKey = [[dataVO.tableDataDictionary allKeys] objectAtIndex:0];
@strongify(self);
_keys = [self.dataVO.tableDataDictionary allKeys];
_rows = [[self.dataVO.tableDataDictionary objectForKey:indexKey] count];

}
}];


[RACObserve(self, styleVO) subscribeNext:^(TableStyleVO* styleVO){
if( styleVO ){
@strongify(self);
self.styleVO.tableHeaderLineHorizontalMargin = styleVO.tableWidth / [_keys count] / 2;
}
}];

}
return self;
}

最佳答案

是的,这是正确的。当他们第一次被观察到时,他们不会有他们的值(value)设定。然后,您应该得到一个在信号上发出的具有初始值的子序列事件。

如果你不想要第一个值,就跳过它!

RACSignal *skipped = [RACObserve(self.tableVM, tableDataVO) skip:1];

关于ios - ReactiveCocoa 的 RACObserve 是不是要替换属性的 set 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25320040/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com