Swift 2.1のカードゲームでXcode 7を使用していますが、私のアプリはシミュレータで正常に動作しますが、 。Xcode 7/Swift 2.1 "デバッガからのメッセージ:メモリの問題により終了しました。"
ブレークポイントを使用して、私はNSTimer.scheduledTimerWithTimeInterval
メソッドにクラッシュを突き止めました。このメソッドは、アニメーションが発生した後に実行され、別のアニメーションをトリガします。
かなり大きい(> 4 MB)ものもあるので、私の画像のサイズかもしれないと思ったので、すべての画像を圧縮して合計で1 MB未満になりました。
また、ゾンビとリークのツールを実行して何も見つかりませんでしたので、私はちょっと困惑しています。ここではクラッシュするコードです。
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()
は、デバッガが単に述べて:「デバッガからのメッセージ:終端によるメモリの問題に"
ご協力いただきまして誠にありがとうございます。詳細情報が必要な場合はお知らせください。ありがとう!
EDIT:
だから、私は反復し、代わりにこれがクラッシュを解決しているようだオリジナルの12の5枚の画像を追加するにfunc playFlipAnimationを変更しましたが、私はまだわからないよいくつかのより多くのそれをテストするために、なぜより多くの画像を持つことが最初の場所でアプリケーションをクラッシュさせているのかについて。
メモリの問題のために終了することは、必ずしもリークの兆候ではありません。まだ行っていない場合は、Allocations Instrumentを使用していくつかのプロファイリングを行い、メモリの増加がどこで発生しているかを正確に確認することをお勧めします。デバイス上でアプリを実行する際には、「リファレンスカウントの記録」にチェックを入れ、永続オブジェクトの数を記録してください。 Allocations楽器に関するオンラインチュートリアルがいくつかありますが、ここで追加のガイダンスが必要な場合はお知らせください。 –
@DerekLee、アドバイスありがとう!だから私はAllocationsを実行し、いくつかのフラグを受け取りました。 "Objective-Cメッセージがアドレス0x7fc5dda8bbf0の無効な 'IDEActivityReport'オブジェクトに送られました。私はこのメッセージを検索しようとしましたが、実質的なものは何も見つかりませんでした。どのようなアイデアを引き起こす可能性がありますか? – rdespoiu
@DerekLeeもう少しテストするために、func playFlipAnimationを変更してオリジナルの12個の代わりに5個の画像を追加しました。これはクラッシュを解決したようですが、なぜ画像を増やすのが不思議ですか?最初にアプリケーションをクラッシュさせます。 – rdespoiu