错误:消息发送到解除分配的实例

时间:2013-03-11 14:08:00

标签: iphone ios objective-c xcode

我做了一个弹出式视图,其上有UIButton关闭视图。每当我按下按钮时,程序都会退出并显示以下消息:[MTPopupWindow performSelector:withObject:withObject:]: message sent to deallocated instance 0x84675f0 以下是header filesource file使用我使用这行代码的类:

[MTPopupWindow showWindowWithContent:@"Some text here" insideView:self.view];

我认为过早释放我的对象有问题,但因为我正在使用ARC我不确定导致这个问题的原因。我认为问题在于这行代码:

[self.closeBtn addTarget:self action:@selector(closePopupWindow) forControlEvents:UIControlEventTouchUpInside];

但我没有看到任何错误。

1 个答案:

答案 0 :(得分:1)

你应该知道写这个时有问题:

// Cast to void because we don't use the result (otherwise compiler warning)

由于您不使用结果,因此ARC认为可以在该行之后在对象上插入一个版本,这意味着该对象将在早期被解除分配。

有很多方法可以解决这个问题。看看NS_RETURNS_RETAINED之类的内容,或者让弹出窗口的调用者对它有强烈的引用。