gpt4 book ai didi

iOS - UIImageWriteToSavedPhotosAlbum

转载 作者:IT王子 更新时间:2023-10-29 07:42:15 29 4
gpt4 key购买 nike

我想用下面的void API把抓拍到的图片写入相册,但是有2个参数不是很清楚

UIImageWriteToSavedPhotosAlbum (
UIImage *image,
id completionTarget,
SEL completionSelector,
void *contextInfo
);

来自ADC的解释:

completionTarget: 可选;在将图像写入相机胶卷相册后应调用其选择器的对象。

completionSelector: completionTarget 对象的方法选择器。此可选方法应符合以下签名:

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo;

这里的completionTarget有什么意义呢?有人可以举例说明应该如何使用此参数吗?或者任何可以指导我完成它的资源。

最佳答案

  • completionSelector 是图像写入完成时要调用的选择器(方法)。
  • completionTarget 是调用此方法的对象。

通常:

  • 要么你不需要在图像写入完成时得到通知(在很多情况下这没有用),所以你对两个参数都使用nil
  • 或者你真的想在图片文件写入相册时得到通知(或者以写入错误结束),在这种情况下,你通常会实现回调(=完成时调用的方法)在您调用 UIImageWriteToSavedPhotosAlbum 函数的同一个类中,因此 completionTarget 通常是 self

如文档所述,completionSelector 是一个选择器,表示具有文档中描述的签名的方法,因此它必须具有如下签名:

- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo: (void *) contextInfo;

它不必具有这个确切的名称,但它必须使用相同的签名,即采用 3 个参数(第一个是 UIImage,第二个是 NSError 第三个是 void* 类型)并且什么都不返回(void)。


例子

例如,您可以声明并实现一个可以像这样调用的方法:

- (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
}
}

当您调用 UIImageWriteToSavedPhotosAlbum 时,您将像这样使用它:

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

注意 @selector(...) 语法中的多个“:”。冒号是方法名称的一部分,所以当您编写此行时,不要忘记在@selector 中添加这些“:”(事件为 trainling )!

关于iOS - UIImageWriteToSavedPhotosAlbum,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7628048/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com