¿Por qué el bloque Objective-C todavía funciona sin copiarlo en el montón?

Tengo un método simple en mi clase:

- (void)getFormWithBlock:(DataCenterResultBlock)block {
    [SomeClass doSomeLongOperationWithParam:someParam 
                                  completionBlock:^(NSData *data, NSURLResponse *response) {
                                      //Success
                                      block(aVar, YES);
                                  } errorBlock:^(NSError *error) {
                                      //Failed
                                      block(nil, NO);
                                  }];
}

Leí que debería copiar bloques al montón si está haciendo algo de forma asíncrona porque están asignados en la pila y una vez que el árbol de llamadas retrocede, desaparecerá.

Pero aquí, no lo estoy copiando en un montón, pero aún así no tengo ningún problema. ¿Por qué? Gracias