我正在使用 Xcode 7 在 Swift 2.1 中开发纸牌游戏,我的应用程序在模拟器中运行良好,但在我的设备上测试时崩溃。
使用断点,我将崩溃确定为NSTimer.scheduledTimerWithTimeInterval
在动画发生后运行的方法(然后触发另一个动画)。
我想这可能是我的图像的大小,因为有些非常大(> 4 MB),所以我压缩了动画中的所有图像,现在它们总共占用不到 1 MB。
我还运行了 Zombie 和 Leak 工具,但一无所获,所以我有点困惑。这是它崩溃的代码。
func animateOnDeal() {
self.playerAnimatedCard.hidden = false
self.dealerAnimatedCard.hidden = true
cardOneToDeal()
}
func cardOneToDeal() {
UIView.animateWithDuration(0.5, animations: {
self.playerAnimatedCard.center.x -= self.view.bounds.width
}, completion: {finished in self.flipCardOne()})
}
func flipCardOne() {
self.playerAnimatedCard.playFlipAnimation()
NSTimer.scheduledTimerWithTimeInterval(0.3, target: self, selector: "cardTwoToDeal", userInfo: nil, repeats: false)
}
这是实际运行动画的代码(在 UIImageView 子类中):
func playFlipAnimation() {
self.image = UIImage(named: "cardback2.png")
self.animationImages = nil
var imgArray = [UIImage]()
for var x = 1; x <= 12; x++ {
let img = UIImage(named: "img\(x).png")
imgArray.append(img!)
}
self.animationImages = imgArray
self.animationDuration = 0.3
self.animationRepeatCount = 1
self.startAnimating()
作为旁注,调试器只是声明:“来自调试器的消息:由于内存问题而终止。”
任何帮助将不胜感激,如果您需要更多信息,请告诉我。谢谢!
编辑:
因此,为了进行更多测试,我将 func playFlipAnimation 更改为迭代并添加 5 个图像而不是原来的 12 个。这似乎已经解决了崩溃问题,但我仍然不确定为什么拥有更多图像会使应用程序崩溃首先。