2011-12-29 4 views
1

사용자의 이미지를 모두 함께 가져 와서 NSMutableArray에 저장하는 응용 프로그램을 만들고 있습니다. 하나의 이미지가 시작되자 마자 하나씩 서버에 이미지를 업로드해야합니다. though images are taken together어떻게 NSThread와 NSNotification을 함께 사용할 수 있습니까?

이미지를 하나씩 업로드하려면 [NSThread detachNewThreadSelector:@selector(uploading:) toTarget:self withObject:imagearray];을 사용하고 있습니다. 이미지가 하나씩 업로드 될 때 progressview를 사용자에게 표시해야합니다.

하나의 이미지를 업로드 한 후 어떻게 알림을 받습니까?

NSThread + NSNotification 이상으로 유용한 다른 시나리오가 있습니까?

답변

0

"위임"패러다임과 비슷한 것을 사용하지만 객체 대신 쓰레드를 생각해 봅니다. 따라서 업로드 스레드는 사용자 인터페이스를 변경하기 위해 주 스레드에서 위임합니다. 예를 들어, 업로드 스레드 부분 업로드 진행

[self performSelectorOnMainThread:@selector(uploadProgression:) 
     withObject:foo waitUntilDone:NO] 

또는 각 전체 업로드 메시지를 보낼 수 난 당신 progessView에 부분 진행 상황을 업데이트하기 위해 업로드 중지하지 않은 것을 가정

[self performSelectorOnMainThread:@selector(uploadDidEnd:) withObject:foo 
     waitUntilDone:YES] 

를 완료하지만, 업로드가 끝날 때까지 기다려야 새 업로드를 시작하는 업로드 스레드가 복제되지 않습니다.

+0

예 내가 부르고을'[자기 performSelectorOnMainThread : @selector (uploadProgression : withObject : 푸 waitUntilDone : NO] '한 번만이 셀렉터가'가 호출해야 완료 할 때마다의 [자기 performSelectorOnMainThread : @selector (uploadDidEnd : 없습니다) withObject : foo waitUntilDone : YES] '그리고 다시'uploadProgtession'으로 돌아가서 arraycount를 계속 써야합니다 – Heena

0

청취자가 얼마나 많은 지 알지 못하고 알림을 게시하는 경우에만 알림을 사용해야합니다. 귀하의 경우에는 아마 하나의보기 컨트롤러 만 있으므로 알림을 사용할 필요가 없으므로 대리인을위한 프로토콜을 만들고보기 컨트롤러에 구현해야합니다. UI를 업데이트해야하는 경우 performSelectorOnMainThread을 사용하여 모든 대리자 메서드를 호출해야합니다.

관련 문제