gpt4 book ai didi

ios - Xcode 6 : UITapGesture is crashing with (lldb)

转载 作者:行者123 更新时间:2023-11-29 02:35:44 26 4
gpt4 key购买 nike

我有一个类,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/

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