2013-03-20 107 views
1

我在我的应用程序这个方法:为什么执行选择器:崩溃我的应用程序?

[self performSelector:@selector(resetAdView:toView:) withObject:currentDelegate_ afterDelay:10]; 

它调用另一个方法和发送对象太方法....

每次我打开一个新的UIViewcontroller添加时间调用此方法视图广告。 后,我创建一个新的UIViewController - >调用这个方法(currentdelegate是新UIViewController),然后按回视图控制器,然后I 10秒此错误后得到:

Thread 1 : EXC_BAD_ACCESS(code=1,address=0xd0000008) 

任何想法有什么不好?为什么我得到这个错误?

+0

您确定'self'正在执行resetAdView:toView方法吗? – Petar 2013-03-20 14:03:06

+0

是的,这个崩溃只发生在我创建新的UIViewController然后按回去回到前一个viewcontroller – MTA 2013-03-20 14:04:18

+4

您指定的选择器只能有零个或一个参数。您不能使用'performSelector:withObject:afterDelay:'方法使用两个参数调用选择器。 – rmaddy 2013-03-20 15:25:20

回答

4

这是因为当您按下后,您的视图控制器会被释放。
如果你使用的是ARC,那么把它变成一个伊娃,这样它就不会被释放。 如果您使用非ARC环境,请保留该视图控制器对象。

0

你没有给我们足够的信息来帮助你,所以我会给你通用的建议: 添加一个异常断点,如果没有给你足够的信息的话。打开僵尸,如果这还不够,打开malloc日志记录......如果这还不够,那么你需要了解更多关于你的开发环境。

+0

我得到这个消息:发送到释放实例0x2217eb90的消息。但我不理解它,因为我调用一个方法并发送一个释放的实例。这是错误的?我无法检查我打电话查看的方法吗? – MTA 2013-03-20 14:59:24

+0

打开僵尸,他们你可以知道什么类是解除分配的实例,然后你可以追溯它,以确定它是否过度释放或保留在... – 2013-03-20 15:11:39

+0

或只是当你在调试器的断点时,你可能能够找到与该地址匹配的变量(或属性)。 – 2013-03-20 15:12:53

相关问题