Objective C Como retornar a função externa de dentro da função interna assíncrona

Eu quero retornar da função externa de dentro da função interna assíncrona. Em breve, eu teria usado o manipulador de conclusão para esse fim, que escaparia da função. Mas no objetivo c, o manipulador de conclusão não retornará da função:

inha função é assim:

-(void)chosenFrom:(NSDictionary<NSString *,id> *)info{

    [self asyncCode:info withCompletion:^(NSData *imageData) {
        if(imageData) {
             // I want to return from  chosenFrom function ***inside here.***
        }
    }];

// This is to illustrate  completion handler don't escape
[self checkCompletionEscaping:^(NSString * lad) {
    NSLog(@"Check me %@", lad);// It would print all 3 lines below.
}];
}

-(void) checkCompletionEscaping:(void(^)(NSString * lad)) completion {
completion(@"Hello"); // completion handler should've escaped from func.
completion(@"Shivam");
completion(@"How are you");
}

Se eu usasse o swift, eu poderia ter retornado facilmente da função externa de dentro da função interna usando o manipulador de conclusão:

private func getHistoryKeys(searchterm: String, completion: @escaping () -> ()) {
  let url = PubmedAPI.createEsearchURL(searchString: searchterm)
  let task = session.dataTask(with: url) { (data, response, error) in
   if let error = error {
      completion() // This would work as return
   } else {
      completion() // Same as return
   }
  }
 task.resume()
}

PS: escapar significa retornar da função, assim como a declaração de retorn

questionAnswers(2)

yourAnswerToTheQuestion