我有一个类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的属性即可解决此问题。

不幸的是,您的示例还不够全面,但是思路还是差不多的。
我建议您使用示波器。

10-08 05:58