【问题标题】:Crash only on iPad仅在 iPad 上崩溃
【发布时间】:2012-11-26 08:59:46
【问题描述】:

我的屏幕上有一些动画。我正在使用精灵表通过 CAlayers 为所有这些设置动画。我正在以viewDidAppear 方法下载所有大小为 4 MB 的资产。

我可以在模拟器和 iPhone 上显示动画。但在 iPad 上收到内存警告。

在我的设备崩溃报告中,异常类型显示为

EXC_BAD_ACCESS(SIGSEGV)

我正在使用以下代码制作动画:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); NSString *documentsDirectory = [paths objectAtIndex:0]; NSString *getImagePath = [documentsDirectory stringByAppendingPathComponent:[NSString stringWithFormat:@"%@.png", imageNameStr]]; UIImage *img = [UIImage imageWithContentsOfFile:getImagePath];

CGImageRef richterImgPl1 = [UIImage imageWithContentsOfFile:getImagePath].CGImage;

NSArray *arrayWithSprites = [img spritesWithSpriteSheetImage:img
                                                  spriteSize:CGSizeMake(230,350)];

CGSize fixedSize = CGSizeMake(230, 350);
MCSpriteLayer *richterPl1 = [MCSpriteLayer layerWithImage:richterImgPl1 sampleSize:fixedSize] ;


richterPl1.frame = imgView.frame;
richterPl1.position = imgView.layer.position;

CABasicAnimation *anim = [CABasicAnimation animationWithKeyPath:@"sampleIndex"];
anim.fromValue = [NSNumber numberWithInt:1];
anim.toValue = [NSNumber numberWithInt:arrayWithSprites.count];
anim.duration = sleepTime;//[imgView.animationImages count] * 0.0500;
anim.repeatCount = 1;

[richterPl1 addAnimation:anim forKey:nil];
[self.view.layer addSublayer:richterPl1];

有摆脱这个问题的想法或线索吗?

【问题讨论】:

  • 请显示一些代码...
  • 尝试在 Xcode 中设置exception breakpoint。它将向您显示导致崩溃的确切行。
  • 尝试开启 NSZombie 对象。方法如下:stackoverflow.com/questions/5386160/…
  • 它是 SEGFAULT,僵尸能理解吗?
  • @Adam 我尝试添加异常断点但没有用。

标签: ios ipad


【解决方案1】:

您必须响应 didReceiveMemory 警告并释放一些资源,否则您的应用将被操作系统杀死,这就是您遇到的这个段错误

【讨论】:

  • 你想让我做什么确实收到内存警告。直到节目结束,我才能释放任何资源。你能详细解释一下吗?
  • 为什么不呢? if(!visible) imageView.image = nil;
猜你喜欢
  • 2013-09-27
  • 2012-08-04
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多