我也遇到了同样的问题,调用+animateWithDuration:animations:completion:
在设备上正常工作但在模拟器上崩溃。
[UIView animateWithDuration:0.5
animations:^{
NSLog(@"Begin");
}
completion:^(BOOL finished){
NSLog(@"End");
}];
正如您所看到的,我没有访问任何其他对象,但仍会因 EXC_BAD_ACCESS 而崩溃。
如果你在block
中传递completion:
传递NULL,那么它似乎只会崩溃。
[UIView animateWithDuration:0.5
animations:^{
NSLog(@"Begin");
}
completion:NULL];
我一直在使用手机进行开发,主要是因为我使用的是一个未经英特尔编译的库,但现在已经切换回模拟器以加快速度。
当我使用UIView animateWithDuration并且不得不在我的代码中暂时将它们注释掉时,我会遇到相应的崩溃。他们在手机上工作正常。我正在使用最新的SDK 4.3.1(几乎)并编译4.0以后。
为什么会崩溃?
[UIView animateWithDuration:0.5 animations:^ {
mapTableOverlay.alpha = 0.8;} completion:^(BOOL finished){}];
调用上面的行时获取EXC_BAD_ACCESS。谢谢你的帮助....
答案 0 :(得分:0)
我需要查看更多代码才能确定,但您访问的唯一对象是mapTableOverlay
,因此问题似乎与该对象有关。查看调用此动画时的状态。 {/ 1}}是否可能在iVar被设置为nil(可能在mapTableOverlay
中)时被释放?
在您的问题中添加以下内容会有所帮助:
代码与viewDidUnload
生命周期
显示动画上下文的代码
崩溃的堆栈跟踪
答案 1 :(得分:0)
这不完全是一个答案,但它确实概述了导致问题的原因,&什么可以缓解它 - 我有完全相同的问题,突然任何UIView animateWithDuration都会崩溃,即使没有传递任何对象,甚至没有完成阻止。它开始时我添加了Urban Airship图书馆&相关框架(libUAirship-1.1.0.a,FNetwork.framework,MobileCoreServices.framework,Security.framework,SystemConfiguration.framework,libz.dylib,libsqlite3.dylib,CoreTelephony.framework,StoreKit.framework)并在我摆脱时立即停止他们又来了。我知道这与sqlite lib& s无关。 storeKit框架我现在正在使用它们,但我从来没有正确地跟踪它。我也很感激能得到更全面的答案!