切换回 ReactiveCocoa 中的主线程
Switch back to the main thread in ReactiveCocoa
我是 ReactiveCocoa 的新手,因此可能会错过一些明显的东西。
我在后台线程上安排了 2 个操作,在它们完成后我想更新 UI 为此我需要切换回主线程,但我不知道如何。
这是代码片段。
-(RACSignal *)executeSigninSignal {
return [[[self.services getAuthenticationService]
authenticationSignalFor:self.username andPassword:self.password]
//Return user if exists
flattenMap:^RACStream *(STUser *user) {
return [[[[self services] getContactsLoadService]
contactsLoadSignalForUser:user]
//Return user contacts
doNext:^(NSArray *contacts) {
STContactsListViewModel *contactsViewModel =
[[STContactsListViewModel alloc] initWithContactsLoadResults:contacts services:self.services];
[self.services pushViewModel:contactsViewModel];
}];
}];
}
authenticationSignalFor:
和 contactsLoadSignalForUser:
是在后台线程上传递的 RACSignals,我想在主线程上执行 doNext 块的内容。
如何声明这个块应该在主线程上执行?
在doNext:
方法之前使用deliverOnMainThread
方法。
我是 ReactiveCocoa 的新手,因此可能会错过一些明显的东西。 我在后台线程上安排了 2 个操作,在它们完成后我想更新 UI 为此我需要切换回主线程,但我不知道如何。 这是代码片段。
-(RACSignal *)executeSigninSignal {
return [[[self.services getAuthenticationService]
authenticationSignalFor:self.username andPassword:self.password]
//Return user if exists
flattenMap:^RACStream *(STUser *user) {
return [[[[self services] getContactsLoadService]
contactsLoadSignalForUser:user]
//Return user contacts
doNext:^(NSArray *contacts) {
STContactsListViewModel *contactsViewModel =
[[STContactsListViewModel alloc] initWithContactsLoadResults:contacts services:self.services];
[self.services pushViewModel:contactsViewModel];
}];
}];
}
authenticationSignalFor:
和 contactsLoadSignalForUser:
是在后台线程上传递的 RACSignals,我想在主线程上执行 doNext 块的内容。
如何声明这个块应该在主线程上执行?
在doNext:
方法之前使用deliverOnMainThread
方法。