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.