저는 아키텍처 문제가 있습니다.
작업을 수행하기 전에 내 앱은 사용자가 로그인했는지 확인해야합니다.코코아에서 비동기 프로세스 간의 종속성을 추가하는 방법
- 사용자가 기록됩니다 : 여기에 3 가지 시나리오가
- 사용자가 로그인하지 않은 아무 문제가 있지만
- 사용자가 로그인하지 않은 , 사용자 이름과 비밀번호가 저장되지 않습니다 저장 I는 사용자 이름과 비밀번호가 있고 내가 필요 로그인 양식을 표시하십시오.
사용자가 로그인 할 때까지 현재 작업을 일시 중단하고 나중에 중지 한 위치에서 다시 시작하십시오.
실용적인 예 : 사용자가 오디오 스트림 콘텐츠를 누르지 만이 콘텐츠는 로그인해야합니다. 내가하고 싶은 : 로그인이 성공적으로 완료 오디오 콘텐츠
나는대로 NSBlockOperation를 사용하는 생각을 시작하는 경우
- 는 로그인 양식
- 프로세스 비동기 로그인 호출
- 보기 두 작업 사이의 래퍼 및 그들 사이의 종속성을 추가하지만 로그인 호출은 로그인 연결을 생성하는 AFNetworking 관리자에게 전달되는 완료 블록을 받아들이는 메서드입니다. 따라서, 그와 같은 종속성을 만들 경우에도 :
NSBlockOperation * operation1 = [NSBlockOperation blockOperationWithBlock:^{ [NetworkController loginUser:^{ NSLog(@"USerLogged"); }] }]; NSBlockOperation * operation2 = [NSBlockOperation blockOperationWithBlock:^{ [weakSelf.player play]; }]; [operation2 addDependency:operation1]; [self.opQueue addOperations:@[operation1,operation2] waitUntilFinished:NO];
operation1 즉시 loginUser가 완료되면 완료됩니다,하지만이는 loginUser 방법은 로그인 과정을 완료 한 경우에만 할 것이라고 싶습니다 결과.
이 문제를 해결하는 가장 좋은 패턴은 무엇입니까?
나는 dispatch_group에 대해서도 생각했다. 그러나 이것은 dispatch_enter의 주입/코드의 특정 부분에서의 떠남을 요구할 것이다.
들으을, 나는 또한이 라이브러리를 발견 https://github.com/ couchdeveloper/RXPromise – Andrea