I wanted to use the following void API to write a captured image to the photo album but I am not very clear about 2 of the parameters
UIImageWriteToSavedPhotosAlbum ( UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo );
From the explanation from ADC:
completionTarget:
optional; the object whose selector should be called after the image has been written to the Camera Roll album.
completionSelector:
the method selector of the completionTarget object. This optional method should conform to the following signature:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo;
What is the significance of completionTarget
here? Can someone explain with an example how this parameter should be used? Or any resource which can guide me through it.
completionSelector
is the selector (method) to call when the writing of the image has finished.completionTarget
is the object on which to call this method.Generally:
nil
for both parametersUIImageWriteToSavedPhotosAlbum
function from, so the completionTarget
will generally be self
As the documentation states, the completionSelector
is a selector representing a method with the signature described in the documentation, so it has to have a signature like:
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo;
It does not have to have this exact name, but it has to use the same signature, namely take 3 parameters (the first being an UIImage
, the second an NSError
and the third being of void*
type) and return nothing (void
).
You may for example declare and implement a method that you could call anything like this :
- (void)thisImage:(UIImage *)image hasBeenSavedInPhotoAlbumWithError:(NSError *)error usingContextInfo:(void*)ctxInfo { if (error) { // Do anything needed to handle the error or display it to the user } else { // .... do anything you want here to handle // .... when the image has been saved in the photo album } }
And when you call UIImageWriteToSavedPhotosAlbum
you will use it like this:
UIImageWriteToSavedPhotosAlbum(theImage, self, // send the message to 'self' when calling the callback @selector(thisImage:hasBeenSavedInPhotoAlbumWithError:usingContextInfo:), // the selector to tell the method to call on completion NULL); // you generally won't need a contextInfo here
Note the multiple ':' in the @selector(...)
syntax. The colons are part of the method name so don't forget to add these ':' in the @selector (event the trainling one) when you write this line!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With