我有一个协议,委托不总是响应的问题。下面是我的实现:协议委托不工作有时
protocol CameraViewDelegate: class {
func didTapCancel(sender: CameraView)
func didFinishSelectingPhoto(image: UIImage, sender: CameraView)
}
在CameraView I类有:
weak var delegate: CameraViewDelegate?
和
@IBAction func cancelButtonTapped() {
delegate?.didTapCancel(self)
}
@IBAction func sendPhotoTapped() {
if let image = selectedImage {
delegate?.didFinishSelectingPhoto(image, sender: self)
}
}
在其他类中,我有:
class PhotoController: CameraViewDelegate {
和
func didTapCancel(sender: CameraView) {
dismissViewControllerAnimated(true, completion: nil)
RootViewController.shared().navigateToHome()
}
func didFinishSelectingPhoto(image: UIImage, sender: CameraView) {
let photo = MyPhoto(image: image)
sendPhoto(photo)
dismissViewControllerAnimated(true, completion: nil)
}
这工作95%的时间,但我得到一个奇怪的错误,委托有时无法回应。如果我点击按钮取消或发送图片,按钮似乎按下但没有任何反应。我知道这是代理无法响应,因为CameraView中不使用委托的其他按钮仍能正常工作。
任何想法?
你是如何设置'CameraView'类的委托属性在_other class_? – nayem
当你做超快的事情时会发生吗?请参阅[这里](http://stackoverflow.com/a/43147376/5175709)。 Paulo的答案可能是危险的,它会造成内存泄漏。 – Honey
@Honey这只是一个快速而肮脏的调试技巧,哈哈!无论如何,改进的答案是让OP保持正确的轨道。感谢您的反馈! –