ios - 努力将 Objective C 选择器和目标签名转换为 Swift

标签 ios objective-c swift selector

美好的一天,

我正在尝试将 Objective C 片段转换为 Swift。我知道选择器可以通过将其放在字符串中来直接翻译,但我无法理解 Objective C 签名。:

Objectice C 选择器(第二个参数):

UIImageWriteToSavedPhotosAlbum(image, self, @selector(image:didFinishSavingWithError:contextInfo:), nil);

目标:

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

我的问题是: 1.我可以简单地将选择器传递为:

UIImageWriteToSavedPhotosAlbum(image, self, "image:didFinishSavingWithError:contextInfo:", nil);

2.请帮助我确定目标函数的特征。我很难过!

最佳答案

要将 Objective-C 方法名转换为 Swift,Objective C 方法中的第一个参数名成为函数名,然后其余参数成为函数的参数。

在您的例子中,第一个参数名称是 image,因此 Swift 中的函数名称将是 image

所以,

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

变得有点奇怪——

func image(image: UIImage, didFinishSavingWithError: NSError, contextInfo:UnsafePointer<Void>)       {

}

为了使事情更简单一些,您可以为错误使用不同的内部参数名称 -

func image(image: UIImage, didFinishSavingWithError error: NSError, contextInfo:UnsafePointer<Void>)       {

}

关于ios - 努力将 Objective C 选择器和目标签名转换为 Swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25108888/

相关文章:

ios - 另一个应用程序中的设备 token 更改

ios - 按下后退按钮时,上一个屏幕上的导航标题消失

ios - 为什么 UIAlertView 的委托(delegate)不起作用?

iphone - 是否可以让 XCode 中的 Interface Builder 自动创建支持 IBAction?

objective-c - 将 zxing 添加到 XCode 4

Swift - 如何管理转单管理?

ios - DiffableDataSource:快照不会重新加载页眉和页脚

ios - 在 PFQueryTableView 中搜索不起作用

swift - 运行和开发相同的 Swift macOS 应用程序

ios - 改变方向时 UIScrollView 的大小