попросите MBProgressHUD вызвать метод, который возвращает значение

#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 *, если бы вы сделали это таким образом.