【问题标题】:UIButton tapped getting [SecondPage performSelector:withObject:withObject:]: message sent to deallocated instanceUIButton 点击​​获取 [SecondPage performSelector:withObject:withObject:]: message sent to deallocated instance
【发布时间】:2015-09-29 15:41:23
【问题描述】:

通过使用 Xcode 5 并启用自动引用计数。

在基于非 NavigationController 的应用程序中,我采用了 UIButton,并且 IBAction 和 IBOutlet 已正确定义和连接。但在 Button 调用的 IBAction for TouchUpInside 事件之前,应用程序会给出“[SecondPage performSelector:withObject:withObject:]: message sent to deallocated instance 0x6cb7970”。 SecondPage 是存在此 UIButton 的视图控制器。

基本上我想在这个被点击的 UIButton 上打开一个新的视图控制器的视图,我将通过自定义 Segue 来做到这一点

【问题讨论】:

    标签: xcode


    【解决方案1】:

    嗯,听起来很奇怪,ARC 在调用选择器之前会自动释放您的 secondView 控制器。

    尝试将您的 secondView 定义为属性类型为 strong 的第一个(如果您将其添加为子视图)的属性。

    这就是我可以推荐的所有内容,而无需查看您的代码。

    【讨论】:

    • 添加强引用属性后没有发生崩溃
    • @Matt Rees,这是我的假设,但我只在 ios7 上遇到这种崩溃 - 有什么想法吗?
    • @JoelBalmer iOS 7 不会有任何区别,这些方法自 iOS 5 以来就已经存在,没有任何改变。该错误将在您的代码中的其他地方。
    • 耻辱,因为它非常相似,虽然它实际上是“[firstViewController withObject: withObject:] message sent to deallocated instance”...球,谢谢
    【解决方案2】:

    我遇到了同样的问题,并按照 Matt Rees 的建议解决了。

    只需在 firstViewController.h 中声明您的 secondViewController 并在那里创建它的实例。喜欢, secondViewController *secondView;

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题并解决了抛出的错误。

      更详细地说,我在注销/登录时重新分配了调用者对象(在本例中为 SecondPage),但重新使用了其他一些视图控制器,因此重新使用的视图控制器具有我重新分配的调用者对象的先前实例。

      嗯,现在解决了!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-08-11
        • 2013-07-03
        • 2011-07-02
        • 2012-11-17
        • 1970-01-01
        • 2011-07-02
        相关资源
        最近更新 更多