我有一个类clickableImage。 clickableImage具有函数的回调变量。
当您分配回调函数时,我添加了一个手势识别器。
clickableImage具有一个“轻按”功能,它仅监听如下所示的tap事件。
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的属性即可解决此问题。
不幸的是,您的示例还不够全面,但是思路还是差不多的。
我建议您使用示波器。