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

标签 ios objective-c xcode swift uigesturerecognizer

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

相关文章:

iphone - [super viewWillAppear] 做什么,什么时候需要?

ios - 如何让自定义 UIView 的 subview 出现在 Document Outline 中?

xcode - 如何解决损坏的 clang : missing stdlib. h 的问题

ios - 当我重新调整尺寸时更改设计 Collection View 单元格

objective-c - 数据库错误 : variable not available

ios - UITextView 链接点击识别延迟

ios - 是否可以直接从 appDelegate 获取 GPS 位置 ios8

iphone - 更新本地通知 BadgeNumber

ios - 使用 MultiPart 上传图片

objective-c - 尝试将 NSString 解析为 NSDate 时出错