내 앱에서 MBProgressHUD 라이브러리를 사용하고 있지만, 방대한 양의 데이터를 쿼리 할 때 진행 상황 표시가 표시되지 않는 경우가 있습니다. 데이터 처리가 완료됩니다 (그때까지 hud가 더 이상 표시되지 않아도 됨).iOS에서 NSThread와 autorealease 풀을 사용하는 효과적인 방법
다른 게시물에서 UI 실행주기가 너무 바빠서 완전히 새로 고쳐지지 않아서 문제가 부분적으로 해결 된 솔루션을 사용했음을 알았습니다. 이제 모든 요청이 HUD가 상승하지만 거의 절반이 앱 충돌 횟수. 왜? 그것이 도움이 필요한 곳입니다.
내가 대리자 방법 didSelectRowAtIndexPath에서이 코드가, 테이블 뷰가 : 난 그냥 전화를 다른 시점에서
- (void)showHUD {
@autoreleasepool {
[HUD show:YES];
}
}
: 다음
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[NSThread detachNewThreadSelector:@selector(showHUD) toTarget:self withObject:nil];
...
}
을, 나는이 방법이
[HUD hide:YES];
잘 작동하면 작동하고, 허드 쇼 (hud show)하고, 예상대로 사라집니다. d, 때로는 응용 프로그램이 충돌하는 경우가 있습니다. 오류 : EXC_BAD_ACCESS. 왜? 그런데
는 HUD 개체가 이미있는 viewDidLoad에 할당 : 그렇지 않으면 처리가 완료 될 때까지 MBProgressHud이되는 MBProgressHud 포인트, 그리기 차단 당신은 다른 스레드에서 처리를 수행 할 필요가- (void)viewDidLoad
{
[super viewDidLoad];
...
// Allocating HUD
HUD = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
[self.navigationController.view addSubview:HUD];
HUD.labelText = @"Checking";
HUD.detailsLabelText = @"Products";
HUD.dimBackground = YES;
}
메인 스레드에서도 처리하고 있습니까? – chedabob
네, 일부 배열을 열거하고, 일부 객체를 채우고, 콜렉션 뷰에있는 것들을 표시합니다 ... 예, 모든 것이 메인 쓰레드에서 처리 된 것 같습니다 ... – Renexandro