2014-11-18 4 views
0

방금 ​​프로젝트에서 ReactiveCocoa를 사용하기 시작했으며이 문제가 발생했습니다. RACObserve를 사용하여 네트워크 연결 상태 변경을 시도하여 버튼 상태를 설정할 수있었습니다.AFNetworkReachabilityManager가 RACSignal을 한 번만 내 보냅니다.

AppDelegate *AppDele = (AppDelegate *)[UIApplication sharedApplication].delegate; 
RACSignal *reachableNetworkSignal = [AppDele.reachableNetworkSignal doNext:^(id x) { 
    NSLog(@"%@",x); 
}]; 

을 내 AppDelegate에에서 : 내의 ViewController에서 나는 코드 아래 사용

- (RACSignal *)reachableNetworkSignal { 
return RACObserve([AFNetworkReachabilityManager sharedManager], reachable); 

}

내가 네트워크 상태가 변경 될 때, 나는 콘솔의 변화를 볼 수 있어야합니다 가정 . 그러나 나는 VC를 입성했을 때 한 번만 얻었습니다. 왜? 감사합니다.

+0

신호를 어디에서 구독하십니까? –

+0

명시 적으로 구독하지는 않지만 다음과 같이 RACCommand initWithEnable 인수로 사용 : '[[RACCommand alloc] initWithEnabled : reachableNetworkSignal signalBlock :^RACSignal * (id input) {}]; ' – Bonan

답변

0
UIButton *aBtn = [[UIButton alloc] init]; 
aBtn.rac_command = [[RACCommand alloc] initWithEnabled:[self network] signalBlock:^RACSignal *(id input) { 
    NSLog(@"has network"); 
    return [RACSignal empty]; 
}]; 

- (RACSignal *)network { 
return RACObserve([AFNetworkReachabilityManager sharedManager], reachable); 
} 

이 작품은 나를 위해 작동합니다.

+0

AFNetworking 코드에 문제가 있습니다. RAC 솔루션은 이와 유사합니다. 감사... – Bonan