Reactivecocoa: RACCommand рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рдВрдХреЗрдд рдкреВрд░рд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реЛрддрд╛?

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдлрд╝рд░ре░ 2015  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: ReactiveCocoa/ReactiveCocoa

RACCommand 'рдХрд╛ рдирд┐рд╖реНрдкрд╛рджрди рд╕рд┐рдЧреНрдирд▓ рдкреВрд░реНрдг рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:

RACCommand *command = [[RACCommand alloc] initWithSignalBlock:^ RACSignal * (id value) {
    return [RACSignal createSignal:^ RACDisposable * (id<RACSubscriber> subscriber) {
        [subscriber sendNext:value];
        [subscriber sendCompleted];
        return nil;
    }];
}];

[command.executionSignals.switchToLatest subscribeNext:^(id value) {
    NSLog(@"next: %@", value); // logs "next: foo"
} completed:^{
    NSLog(@"completed"); // never executes
}];

[command execute:@"foo"];

executionSignals рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рдВрдХреЗрдд рдХреЗ рд╕рд╛рде рдЧрд▓рдд рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

[[command.executionSignals
    map:^(RACSignal *execution) {
        return [execution doCompleted:^{
            // something
        }];
    }]
    switchToLatest]

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

-switchToLatest рддрдм рддрдХ рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рдЬрдм рддрдХ рд╕рд┐рдЧреНрдирд▓-рдХреЗ-рд╕рд┐рдЧреНрдирд▓ рдкреВрд░реЗ рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддреЗред рдПрдХ рдкреВрд░реНрдг рдШрдЯрдирд╛ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдХреЗрддреЛрдВ рдкрд░ -materialize рдпрд╛ -concat: рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдореИрдВрдиреЗ -switchToLatest рдХреЗ рдПрдХ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рд╕рдм рдХреБрдЫ рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рджреЗрдЦрд╛ред

рддреБрд░рдВрдд рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рддреБрдо рд▓реЛрдЧ рдХрдорд╛рд▓ рдХреЗ рд╣реЛред :рдЖрдБрдЦ рдорд╛рд░рдирд╛:

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ

рдореИрдВ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реИ,
рдореИрдВ рдПрдХ рдХрдорд╛рдВрдб рдХрд╛ рдЖрдВрддрд░рд┐рдХ рд╕рдВрдХреЗрдд рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?

рдзрдиреНрдпрд╡рд╛рдж

рдореЗрд░реЗ рдкрд╛рд╕ рдПрдХ рдирдореВрдирд╛ рдХреЛрдб рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж

[[command.executionSignals
    map:^(RACSignal *execution) {
        return [execution doCompleted:^{
            // something
        }];
    }]
    switchToLatest]
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕