我有一个类,clickableImage。 clickableImage 有一个函数的回调变量。
当你分配回调函数时,我添加了一个手势识别器。
clickableImage 有一个函数“tapped”,它只监听点击事件,如下图所示。
private func tapped(tap:UITapGestureRecognizer)
{
println("Here")
if(_touchCallback != nil)
{
touchCallback(self)
}
}
var touchCallback:((K_PreviewImage)->Void)
{
set{
if(_touchCallback == nil)
{
var tap:UIGestureRecognizer = UITapGestureRecognizer(target: self, action:"tapped:")
self._image.addGestureRecognizer(tap)
}
_touchCallback = newValue
}
get{
return _touchCallback
}
}
当我点击这张图片时,应用程序崩溃,只有 (llb)。 println() 不会被调用。我尝试启用僵尸程序,但我“有时”收到一条消息“消息已发送到已解除分配的实例”。
图片未被删除,否则我无法点击它!
如果你知道发生了什么,你就会成为救星
最佳答案
我将给您几个示例,这些示例将导致“消息发送到已释放的实例”。
class ViewController : UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Some other class that has gestureRecognizer it
// Along with views
var otherClass = OtherClass()
self.view.addSubview(otherClass.view)
otherClass.bindGestures()
}
}
点击会给你一个错误。
修复它:
class ViewController : UIViewController {
var otherClass : OtherClass!
override func viewDidLoad() {
super.viewDidLoad()
self.otherClass = OtherClass()
self.view.addSubview(self.otherClass.view)
self.otherClass.bindGestures()
}
}
将对象作为 viewController 的属性可以解决问题。
不幸的是,你的例子不够全面,但想法或多或少是清晰的。 我建议你玩示波器。
关于ios - Xcode 6 : UITapGesture is crashing with (lldb),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26395930/