【问题标题】:UIViewController respondsToSelector: message sent ot deallocated instanceUIViewController respondsToSelector:消息发送到释放的实例
【发布时间】:2013-04-13 01:53:43
【问题描述】:

我在阅读了一些类似的帖子后在这里发帖,但你知道每个问题仍然有他自己的特定问题,这就是为什么我仍然需要你的帮助。

我的应用程序因此堆栈跟踪而崩溃:

[ReviewVC respondsToSelector:]: message sent to deallocated instance

我在试图查看导致崩溃的相关代码的仪器上跟踪了这一点:

这里是didSelectRowAtIndexPath:委托方法中ReviewVC的相关代码:

self.reviewVC = [[[ReviewVC alloc] initWithNibName:@"Review"
                                                     bundle:nil] autorelease];
[viewControllerArray addObject:self.reviewVC];
self.appDelegate.splitViewController.delegate = self.reviewVC;

reviewVC 是一个实例变量和一个属性,这里是它的属性声明:

@property (nonatomic, retain)  ReviewVC *reviewVC;

我错过了什么吗?

【问题讨论】:

  • 你有@synthesize 吗?如果你省略了自动释放怎么办?
  • 是的,它是@synthesize'd
  • self.reviewVC 有没有设置好?设置断点并查看 ReviewVC 分配返回的内容。也许尝试使用 [NSBundle mainBundle] loadNibNamed:] 来检索它。
  • 我试图删除autorelease 命令,现在一切正常,如果可能的话仍然需要一些解释:)
  • viewControllerArray 的用途是什么?您要添加 reviewVC,然后呢?运行时可能检测到您不再使用(分配委托不算数)。我认为 reviewVC 在那个方法之后已经消失了。

标签: ios memory-management


【解决方案1】:

看看这个。似乎viewControllerArray 正在被释放,并且实例ReviewVC 添加到其中。我认为自动释放很好,但请检查 viewControllerArray 是如何保留的。

NSObject obj1;
obj1=[[NSObject alloc] init];
//obj1's retain count is 1 here.

[array1 addobject:obj1];
//obj1's retain count incremented by 1, so the total retain count is 2.

[obj1 release];
//obj1's retain count decremented by 1, so the total retain count is 1.

【讨论】:

    猜你喜欢
    • 2012-05-19
    • 2013-08-17
    • 1970-01-01
    • 2012-07-14
    • 2017-05-12
    • 1970-01-01
    • 2013-08-14
    • 1970-01-01
    • 2011-08-16
    相关资源
    最近更新 更多