#iphone #mbprogresshud
#iPhone #mbprogresshud
Вопрос:
Я хотел бы использовать MBProgressHUD с…
[HUD showWhileExecuting:@selector(fetchDomainStatus) onTarget:self withObject:nil animated:YES];
но мне нужно вызвать метод (fetchDomainStatus), который возвращает domainStatus (значение int).
Как я могу это сделать без какой-либо переменной класса?
Ответ №1:
Если вы можете использовать блоки (т. Е. ваше приложение для iOS 4.0 ), вы можете сделать что-то подобное и при этом сохранить всю магию потоков:
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
// Do the task in the background
int status = [self fetchDomainStatus];
// Hide the HUD in the main tread
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
});
});
Ответ №2:
Вероятно, то, что вы хотите сделать, это:
[HUD show:YES];
int status = [self fetchDomainStatus];
[HUD hide:YES];
В противном случае используйте параметр «withObject» для передачи указателя на объект (возможно, объект NSValue), где вы можете сохранить возвращаемое значение. Вам пришлось бы изменить fetchDomainStatus, чтобы принимать параметр NSValue *, если бы вы сделали это таким образом.