내 응용 프로그램에서 웹 서비스를 호출하고 객체 배열로 구문 분석되는 JSON을 가져 오는 몇 곳이 있습니다. 시간이 많이 소요되는 부분은 확실히 웹 서비스 호출입니다. 다음과 같이 내가 원하는 동작은 다음과 같습니다UIActivityIndicator가있는 UIAlertView가 너무 늦게 나타납니다/스레딩 문제
- 사용자가 ActivtiyIndicator의 서브 뷰와 AlertView 새로운 VC에
- 데이터 부하를 추가 현재보기에 관심
- 의 행을 선택
- 새로운보기는
- AV 표시기를 표시 사라짐
내 VC에는 기본적으로 표시되는 데이터 배열을로드하는 doLoadData
메서드가 있습니다 각 VC별로. 예를 들어 :
AnimalViewController
는 버튼을 누르면 않는다는 것을 "보기 개"가 :
DogViewController *vc = [[DogViewController alloc] init];
[self.navigationController pushViewController:vc animated:YES];
[vc release];
DogViewController
재산 NSArray *dogs
잠시 일이 걸리는 방법 doLoadDogs
을 가지고 있습니다.
현재 나는 "보기 개"방법이 있습니다
- 는
- 푸시는
- 는 AlertView 숨기기
- 그것이
- 벤처를 만들기들보기 ActivityIndicator와 함께 AlertView 만들기
- 해제 및 지정하지 않음
이것은 어려운 일이 아니지만 아직 스레드로이 간단한 구현을 찾지 못했습니다.
이 (위의 코드 블록),하지만 지금 무슨 일입니다 : 예를 들어 (분명이 실제 요구 사항/코드를 업데이트 할 필요가있을 것이다) viewDogs이라는 일시 정지, 새로운 화면 (와 데이터 및 활동 표시기)가 나타나면 활동 표시기가 사라지고 검은 색 모서리가 사라집니다. 내가 원하는 일은 viewDogs가 호출되어 loadDogs가 끝날 때까지 해당 화면에 활동 표시기를 표시 한 다음 새 화면을 표시합니다. –
@ jshin47 예, 좋지 않습니다. 가장 좋은 방법은 로딩 코드를 차단하여 차단하지 않고 완료되었을 때 어떤 식 으로든 사용자에게 알리는 것입니다. GCD를 사용하여이 작업을 수행하는 것은 상대적으로 쉽지만 한 가지 방법으로 모든 작업을 수행하고 싶지는 않습니다. –
@JasonCoco 다른 스레드에서 performselector 대신 dispatch_async를 사용하는 이유는 무엇입니까? –