2012-01-06 5 views
0

데이터베이스 및 건물 객체에서 일부 정보를 읽는 동안 이미지 애니메이션을 만들고 싶은 앱이 있습니다. UIImageView를 사용하고 이미지 배열을 설정했지만 애니메이션을 시작한 다음 DB 처리를 수행하면 애니메이션이 재생되지 않습니다.애니메이션 도중 처리를 수행하는 방법

애니메이션을 시작하거나 애니메이션을 처리하는 다른 방법이 있습니까?

감사합니다.

답변

3

메인 스레드에서 처리하는 것처럼 들리므로 애니메이션이 실행되지 않는 것 같습니다.

애니메이션이 주 스레드에서 실행되므로이 ​​스레드 처리를 차단하지 않으려면 다른 스레드에서 예약해야합니다.

당신과 같이 사용하여이 블록을 얻을 수 있습니다

dispatch_queue_t queue; 
queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); 

dispatch_async(queue, ^{ 

    // Your processing to be performed on this thread. 
}); 

또는에 이전의 iOS 버전을,과 같이 :

[self performSelectorInBackground:@selector(yourProcessing) withObject:nil]; 

- (void)yourProcessing { 

    // Your processing to be performed on this thread. 
} 

내가보기 엔이 선행 된 Threading Programming Guide의 읽어 권장을 보면서 블록 및 그랜드 센트럴 디스패치 (WWDC 2009)를 다루는 WWDC 세션.

+0

고마워요. 지금 그걸보고 있습니다. – LilMoke

2

애니메이션을 시작한 후에는 백그라운드 스레드에서 DB 처리를 실행할 수 있습니다. 이렇게하면 두 개가 동시에 발생할 수 있습니다.

+0

아, 네, 그렇습니다. Xcode, Objective C 및 iPad를 처음 접했을 때 스레드를 시작하는 과정을 밟고 있습니다. 그 방향으로의 어떤 도움이라도 환영 할 것입니다. 예, 스 니펫 등 감사합니다 – LilMoke

+0

@LilMoke [이 게시물을 체크 아웃 (http://stackoverflow.com/questions/4422561/calling-performselectorinbackground-from-background-thread) 및 [this post] (http : // stackoverflow .com/questions/873200/memory-management-and-performselectorinbackground)를 참조하십시오. 열쇠는 autoreleasepool을 관리하는 것이지만 예제에서는이를 올바르게 수행하는 방법을 보여줍니다. – PengOne

+0

예, 지금 해보십시오. – LilMoke

2

메인 스레드에서 데이터베이스 처리를 수행하는 것처럼 들리지만 사용자 인터페이스를 차단하여 애니메이션을 만들 수 없으므로 사용자가 아무 것도 할 수 없습니다. Concurrency Programming Guide을 살펴보십시오.

관련 문제