콜백 블록을 저장하고 속성 또는 사전에 블록을 저장하지 않고 나중에 실행하는 표준 방법이 있는지 알아 내려고하고 있습니다.iOS : 콜백 블록 저장 및 실행
다음과 같은 시나리오를 상상해 :
나는 클래스가을의이 MyApiClient
을 가정 해 봅시다과 요청이 완료되면 완료 블록이 호출 getListOfBooksWithCompletionHandler:(void (^))completion
라는 방법을 가지고 있습니다. 지금까지 그렇게 좋았어.
내부적으로 MyApiClient
은 완료를 제공하지 않지만 호출을 위임하기 만하는 다른 API의 일부 메소드를 호출해야합니다.
이것은 다른 API에서 각 대리자 메서드가 호출 될 때까지 어딘가에 콜백 블록을 저장해야한다는 것을 의미합니다.
나는 이전 프로젝트에서 NSMutableDictionary
에 콜백 블록을 저장하고 일종의 고유 식별자를 사용하여 위임 호출 중에 찾아 냈습니다.
내게는이므로 이 불필요한 상용구 코드처럼 느껴집니다. 더 좋은 방법/API가 있습니까? 어쩌면 어떤 ID로 블록을 저장하고 블록에 호출을 보내는 신호를 트리거 할 수있는 메커니즘일까요?
Google이나 Apple의 설명서를 사용하여 이것에 관해 많이 알 수 없습니다. 어떤 아이디어?
왜 블록을 저장하기 위해 속성을 사용하지 않으므로 클래스 확장에 추가 할 수 있습니까? – Greg
그 문제는 한 번에 하나의 요청 만 허용한다는 것입니다. 첫 번째 요청이 아직 끝나지 않은 상태에서 두 번째 요청을 트리거하면 이전 콜백 핸들러를 덮어 쓰게되어 많은 문제가 발생합니다. 앞서 말했듯이, 블록을 저장하기 위해 사전을 사용하여이 문제를 해결했지만 더 나은 방법이 있는지 알아 보는 것이 중요합니다. – BastiBen
다음 블록 대신 대리자를 사용하면 어떨까요? –