2017-08-28 5 views
0

アクションが存在しないときにSKAction(名前:)を呼び出すと、アプリケーションが「メモリの問題により終了しました。SKAction(名前が:)のために「メモリの問題によって終了しました」というアプリケーションがクラッシュする

私のアプリには、いくつかのスプライトキットのシーン(.sksファイル)とスプライトキットのアクションファイルがあります。スプライトが押されると、私はそのオブジェクトのSKActionをインスタンス化しようとします。私が要求しているアクションが存在しない場合、アプリケーションはゼロを返す代わりにクラッシュします。それは、システムがすべての行動を通して何らかの形で記憶を解放していないと思われるようです。誰もこの問題を経験しましたか? SKSの量が減少している場合、問題を解決するようだが、それは無限にプリントアウトですので、私は「!!!!!!!アクションをSKSの

func runAction(node:SKNode, actionName:String) { 

    guard let action = SKAction(named: actionName) else { 

     print("!!!!!!! action not found: \(actionName)") 

     return 
    } 
    print("found action") 
    node.run(action) 

} 

答えて

0

アクションが見つからないのすべてをする必要はありません見つかった:(actionName) "メモリがなくなるまで。

最大試行回数があるので、おそらくディスパッチキューを使用して遅延を追加し、送信しようとしているアクションが存在することを確認してください。

+0

コールが失敗した場合は、メッセージを1回だけ出力し、終了します。 SKAction(named :)の繰り返し呼び出しがありません – rokasoft

+0

ああ、私は同じ関数を再度呼び出すときに 'node.run(action)'を誤読しました。それはすべてそれが与えるのですか?メモリの問題、その他の詳細はありませんか? –

+0

はい。非常に不安定です。メモリの問題は、さまざまな場所(Googleそれ)で発生するようです。それは、アクションの "DB"を検索するようだが、それはメモリリークまたは何かのように思える。 – rokasoft

0

iPadにiOS 11.0 betaをインストールすると、この機能がより安定しました。アクションが見つからない場合でもクラッシュしますが、アクションが存在する場合はより安定しているようです。

回避策として、代わりにSKAction(from::)という名前を使用しています。まず、アクションsksファイルのURLを取得し、そのファイルからSKActionを取得しようとします。これはアクションの直接呼び出しなので、メモリの問題は発生していません。

関連する問題