NSOperation espere hasta que se ejecute el bloque asincrónico

Necesito poner operaciones asincrónicas en una cola de operaciones, sin embargo, necesitan ejecutarse después de la otra

self.operationQueue = [NSOperationQueue new];
self.operationQueue.maxConcurrentOperationCount = 1;

[self.operationQueue addOperationWithBlock:^{

    // this is asynchronous
    [peripheral1 connectWithCompletion:^(NSError *error) {

    }];

}];

[self.operationQueue addOperationWithBlock:^{

    // this is asynchronous
    [peripheral2 connectWithCompletion:^(NSError *error) {

    }];

}];

el problema es que, dado que periféricoN connectWithCompletion es asíncrono, la operación en la cola finaliza y se ejecuta la siguiente, necesitaría simular, sin embargo, que periféricoN connectWithCompletion es síncrono y espere al final de la operación, hasta que se ejecute el bloque asíncrono

así que necesitaría un comportamiento como este, solo usando la cola de operaciones

    [peripheral1 connectWithCompletion:^(NSError *error) {

            [peripheral2 connectWithCompletion:^(NSError *error) {

            }];

    }];

Respuestas a la pregunta(2)

Su respuesta a la pregunta