In Xcode, when I'm trying to add more than 5 images to my library, it gives me the following error:
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"}
In order to solve this problem, I figured out threads would solve my problems. The documentation states that I can use POSIX threads or NSThreads
. When I try using POSIX threads, I set my threads to be joinable, and I'm creating a void * function:
void * myFunc (void * image)
{
UIImageWriteToSavedPhotosAlbum((__bridge UIImage *)(image),self,nil,nil);
pthread_exit(NULL);
return NULL;
}
I am also waiting for the thread to end. But still only 5 images are written.
I've tried using NSThreads
and did:
[self performSelectorOnMainThread:@selector(myFunc:) withObject:image waitUntilDone:YES];
But still it doesn't work.
Is there an answer to my problem? It's crucial to my work.
Thanks.
Edit:
Tried dispatch_async too. Is it wrong?
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]);
}
}];
});
}
What do I need to add?