jak dodać dodatkowy argument do bloku
Mailcore ma fajnemetoda który pobiera załącznik i akceptuje blok jako parametr do zwracania postępu pobierania:
- (CTCoreAttachment *)fetchFullAttachmentWithProgress:(CTProgressBlock)block;
gdzie CTProgressBlock jest zdefiniowany jako
typedef void (^CTProgressBlock)(size_t curr, size_t max);
więc zazwyczaj używałbym tego w ten sposób:
//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);
}];
problem polega na tym, że ta ostatnia metoda jest wywoływana przez moją główną klasę interfejsu użytkownikaFileBucket.m
a ta klasa z kolei pobiera wiele załączników dla wielu różnych elementów interfejsu użytkownika w sekwencji. Chciałbym, aby ta metoda wywołania zwrotnego zgłosiła się z powrotemFileBucket.m
do którego przynależności ten postęp należy. Innymi słowy chcę czegoś podobnego do:
// 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);
}];
Wiem, że trudno to wyjaśnić / zilustrować.AttachmentDownloader.m
zdaje sobie sprawę z tego, o co chodzi w tym postępie ... ale po prostu chce go przekazać z powrotemFileBucket.m
każdego razu wywoływany jest blok wywołania zwrotnego.