为什么执行选择器:崩溃我的应用程序?
我在我的应用程序这个方法:为什么执行选择器:崩溃我的应用程序?
[self performSelector:@selector(resetAdView:toView:) withObject:currentDelegate_ afterDelay:10];
它调用另一个方法和发送对象太方法....
每次我打开一个新的UIViewcontroller
添加时间调用此方法视图广告。 后,我创建一个新的UIViewController
- >调用这个方法(currentdelegate
是新UIViewController
),然后按回视图控制器,然后I 10秒此错误后得到:
Thread 1 : EXC_BAD_ACCESS(code=1,address=0xd0000008)
任何想法有什么不好?为什么我得到这个错误?
这是因为当您按下后,您的视图控制器会被释放。
如果你使用的是ARC,那么把它变成一个伊娃,这样它就不会被释放。 如果您使用非ARC环境,请保留该视图控制器对象。
你没有给我们足够的信息来帮助你,所以我会给你通用的建议: 添加一个异常断点,如果没有给你足够的信息的话。打开僵尸,如果这还不够,打开malloc日志记录......如果这还不够,那么你需要了解更多关于你的开发环境。
我得到这个消息:发送到释放实例0x2217eb90的消息。但我不理解它,因为我调用一个方法并发送一个释放的实例。这是错误的?我无法检查我打电话查看的方法吗? – MTA 2013-03-20 14:59:24
打开僵尸,他们你可以知道什么类是解除分配的实例,然后你可以追溯它,以确定它是否过度释放或保留在... – 2013-03-20 15:11:39
或只是当你在调试器的断点时,你可能能够找到与该地址匹配的变量(或属性)。 – 2013-03-20 15:12:53
您确定'self'正在执行resetAdView:toView方法吗? – Petar 2013-03-20 14:03:06
是的,这个崩溃只发生在我创建新的UIViewController然后按回去回到前一个viewcontroller – MTA 2013-03-20 14:04:18
您指定的选择器只能有零个或一个参数。您不能使用'performSelector:withObject:afterDelay:'方法使用两个参数调用选择器。 – rmaddy 2013-03-20 15:25:20