0

我制作了一个弹出视图,UIButton上面有一个关闭视图。每当我按下按钮时,程序退出并显示以下消息:[MTPopupWindow performSelector:withObject:withObject:]: message sent to deallocated instance 0x84675f0 这是使用该类的头文件源文件我使用这行代码:

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

我认为过早解除分配我的对象有问题,但由于我正在使用ARC,我不确定是什么导致了这个问题。我认为问题出在这行代码中:

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

但我不认为这有什么问题。

4

1 回答 1

1

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

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

由于您不使用结果,ARC 认为可以自由地在该行之后的对象上插入释放,这意味着该对象很早就被释放了。

有很多方法可以解决这个问题;看看诸如NS_RETURNS_RETAINED或让您的弹出窗口的调用者对其有强烈引用之类的东西。

于 2013-03-11T14:22:05.153 回答