Programowanie ios: używanie wątków do dodawania wielu obrazów do biblioteki
W Xcode, kiedy próbuję dodaćwięcej niż 5 zdjęć do mojej biblioteki daje mi następujący błąd:
Error Domain=ALAssetsLibraryErrorDomain Code=-3301 "Write busy" UserInfo=0xa706aa0 {NSLocalizedRecoverySuggestion=Try to write again, NSLocalizedFailureReason=There was a problem writing this asset because the writing resources are busy., NSLocalizedDescription=Write busy, NSUnderlyingError=0xa770110 "Write busy"}
Aby rozwiązać ten problem, odkryłem, że wątki rozwiążą moje problemy. Dokumentacja stwierdza, że mogę używać wątków POSIX lubNSThreads
. Gdy próbuję używać wątków POSIX, ustawiam moje wątki, aby były dostępne, i tworzę funkcję pustki *:
void * myFunc (void * image)
{
UIImageWriteToSavedPhotosAlbum((__bridge UIImage *)(image),self,nil,nil);
pthread_exit(NULL);
return NULL;
}
Czekam również na zakończenie wątku. Ale nadal zapisywanych jest tylko 5 obrazów.
Próbowałem użyćNSThreads
I zrobił:
[self performSelectorOnMainThread:@selector(myFunc:) withObject:image waitUntilDone:YES];
Ale nadal nie działa.
Czy istnieje odpowiedź na mój problem? To kluczowe dla mojej pracy.
Dzięki.
Edytować:
Próbowałem też dispatch_async. Czy to źle?
dispatch_queue_t myQueue = dispatch_queue_create("com.cropr.myqueue", 0);
for (UIImage * image in images) {
dispatch_async(myQueue, ^{
[self.library saveImage:image toAlbum:@"Cropr" withCompletionBlock:^(NSError *error) {
if (error!=nil) {
NSLog(@"Big error: %@", [error description]);
}
}];
});
}
Co muszę dodać?