gpt4 book ai didi

ios - 无法识别 UIImageWriteToSavedPhotosAlbum 中的 Swift 选择器,为什么?

转载 作者:搜寻专家 更新时间:2023-11-01 05:49:46 26 4
gpt4 key购买 nike

iOS API 函数 UIImageWriteToSavedPhotosAlbum 将选择器作为一个参数:

func UIImageWriteToSavedPhotosAlbum(_ image: UIImage, 
_ completionTarget: Any?,
_ completionSelector: Selector?,
_ contextInfo: UnsafeMutableRawPointer?)

https://developer.apple.com/documentation/uikit/1619125-uiimagewritetosavedphotosalbum

但是,在 swift 中,当我调用这个函数时,选择器永远不会被识别:

class Base {
func save_image(img:UIImage) {
UIImageWriteToSavedPhotosAlbum(img, self, Selector("image:didFinishSavingWithError:contextInfo:"), nil)
// I also tried this:
// UIImageWriteToSavedPhotosAlbum(img, self, #selector(image(_:didFinishSavingWithError:contextInfo:))
}

@objc func image(_ image: UIImage, didFinishSavingWithError error: Error?, contextInfo: UnsafeRawPointer) {
print("Photo Saved Successfully")
}
}

class Child:Base {
}

// This is how I call the save_image function:
let child = Child()
child.save_image()

如您所见,我尝试从签名和字符串构造选择器,但都不起作用。我总是在运行时遇到这个错误:

'XXX.Child' does not implement methodSignatureForSelector: -- trouble ahead
Unrecognized selector ......

这里发生了什么?我想知道这是否是因为 swift 没有看到 Child 类的方法,因为该方法是从 Base 类继承的?

如何才能成功传递选择器?

我看过的相关问题:

@selector() in Swift?

最佳答案

methodSignatureForSelector 是 NSObject 的方法。所以,你需要继承NSObject类。

class Base: NSObject {
...
}

关于ios - 无法识别 UIImageWriteToSavedPhotosAlbum 中的 Swift 选择器,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46408317/

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