como agregar un argumento extra a un bloque

Mailcore tiene un frescométodo que descarga un archivo adjunto y acepta un bloque como parámetro para devolver el progreso de la descarga:

- (CTCoreAttachment *)fetchFullAttachmentWithProgress:(CTProgressBlock)block;

donde CTProgressBlock se define como

typedef void (^CTProgressBlock)(size_t curr, size_t max);

así que típicamente lo usaría así:

//AttachmentDownloader.m
int fileNum = x; // explained later
CTCoreAttachment* fullAttachment = 
    [attachment fetchFullAttachmentWithProgress:^(size_t curr, size_t max) {
    NSLog(@"::: this is curr: %zu", curr);
    NSLog(@"::: this is max: %zu\n\n", max);
}];

el problema es que este último método es llamado por mi clase de interfaz de usuario principalFileBucket.m y esta clase a su vez está obteniendo muchos archivos adjuntos para muchos elementos diferentes de UI en secuencia. Me gustaría este método de devolución de llamada para informar aFileBucket.m a qué apego pertenece este progreso ... en otras palabras, quiero algo similar a lo siguiente:

// FileBucket.m
[AttachmentDownloader runMultiple:attachmentTree 
                     withProgress:^(size_t curr, size_t max, int fileNum) {
    NSLog(@"::: this is curr: %zu", curr);
    NSLog(@"::: this is max: %zu\n\n", max);
    NSLog(@"::: this progress belongs to element %d", fileNum);
}];

Sé que esto es difícil de explicar / ilustrar ... una cosa extra:AttachmentDownloader.m es consciente de qué apego se trata este progreso ... pero solo quiere pasarlo de nuevo aFileBucket.m cada vez Se llama al bloque de devolución de llamada.