porque - liberar espacio sistema iphone
iPhone: falla al guardar una imagen de la cámara en el álbum de iPhone (2)
La forma correcta de obtener el selector es la siguiente, ya que los nombres de los argumentos también forman parte del nombre del método:
@selector(photoSaved:didFinishSavingWithError:contextInfo:)
Estoy tomando una foto con mi aplicación, se llama al método de delegado, la imagen se guarda en la biblioteca, pero tengo un error de bloqueo en el registro:
*** Terminating app due to uncaught exception ''NSInvalidArgumentException'', reason: ''+[NSInvocation invocationWithMethodSignature:]: method signature argument cannot be nil''
*** Call stack at first throw:
(
0 CoreFoundation 0x33ac0987 __exceptionPreprocess + 114
1 libobjc.A.dylib 0x3347b49d objc_exception_throw + 24
2 CoreFoundation 0x33a6b05d +[NSInvocation invocationWithMethodSignature:] + 340
3 PhotoLibrary 0x3038da11 __-[PLAssetsSaver _createWriteImageCompletionBlockWithImage:target:selector:contextInfo:]_block_invoke_1 + 96
4 PhotoLibrary 0x3038d7cd __-[PLAssetsSaver _saveImage:imageData:properties:completionBlock:]_block_invoke_2 + 56
5 PhotoLibrary 0x3038de87 __-[PLAssetsSaver queueJobData:requestEnqueuedBlock:completionBlock:imagePort:previewImagePort:]_block_invoke_2 + 122
6 libSystem.B.dylib 0x33c32680 _dispatch_call_block_and_release + 20
7 libSystem.B.dylib 0x33c32e38 _dispatch_main_queue_callback_4CF + 220
8 CoreFoundation 0x33a482ab __CFRunLoopRun + 1334
9 CoreFoundation 0x33a47c87 CFRunLoopRunSpecific + 230
10 CoreFoundation 0x33a47b8f CFRunLoopRunInMode + 58
11 GraphicsServices 0x33b0e4ab GSEventRunModal + 114
12 GraphicsServices 0x33b0e557 GSEventRun + 62
13 UIKit 0x32099329 -[UIApplication _run] + 412
14 UIKit 0x32096e93 UIApplicationMain + 670
15 MySoPrettyApp 0x00002737 main + 82
16 MySoPrettyApp 0x000026e0 start + 40
)
terminate called after throwing an instance of ''NSException''
Mi código es el siguiente:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImage *pickedImage = [[info objectForKey:UIImagePickerControllerOriginalImage] retain];
UIImageWriteToSavedPhotosAlbum (pickedImage, self, @selector(photoSaved:::), nil);
}
-(void)photoSaved:(UIImage*)image didFinishSavingWithError:(NSError*)error contextInfo:(void*)contextInfo {
if(!error){
NSLog(@"Photo saved to library!");
} else{
NSLog(@"Saving failed :(");
}
}
pickedImage no es nada.
El método de foto guardada se declara en .h
También probé con @selector (photoSaved :) y @selector (photoSaved).
Cuál es el problema ?
Pruébalo así:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
{
if(!error){
NSLog(@"Photo saved to library!");
}
else{
NSLog(@"Saving failed :(");
}
}
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *pickedImage = [[info objectForKey:UIImagePickerControllerOriginalImage] retain];
UIImageWriteToSavedPhotosAlbum(pickedImage, self, @selector(image:didFinishSavingWithError:contextInfo:), nil );
}