8

Xcodeでコントローラーをテストすると、すべて問題ないのに、deinitメソッドが呼び出されないのはなぜですか。それが正しいか?

アプリが正常に動作している間は問題ありませんが、UITestターゲット向けではありません。

複雑な構造のシミュレーターでは、より多くのオブジェクトを何度も割り当て、... 割り当てをまったく解除しないでください。そのため、低速のマシンではアプリが理由もなく終了することがよくあります...そしてテストを実行できません。

Xcode 8、iOS 10、macOS Sierra を使用。

4

2 に答える 2

0

テスト コードのサンプルを見ずにあなたの質問に明確に答えることはできませんが、あなたのケースはいくつかの点を疑っています。

基本的に何が起こっているかというと、実行するテストごとにアプリが新しいプロセスを作成しているということです。コード内のどこかでメモリ リークが発生している場合は、最初に調査する必要があります。メモリ リークが発生している場合、一連のプロセスをスピンアップするテスト フレームワークがクラ​​ッシュを引き起こし、通常の実行中にその問題がレーダーの下を飛んでいる可能性があります。

また、テスト クラスでティア ダウン関数を使用してコントローラーを明示的に初期化解除しない限り、プロセスは通常、テストの最後に強制終了されます。再初期化をテストしたい場合は、テストでティアダウンを明示的にトリガーして、メモリ割り当ての動作をテストすることをお勧めします。また、ここでは Xcode Analyze 機能が役立つ場合があります。

テストコードのサンプルを投稿していただければ、非常に役立ちます。それに応じて回答を編集します。

于 2016-10-18T01:20:29.987 に答える
0

deinit が空でないことを確認してください。空の場合は機能しません。割り当てを解除する必要があるものを入れて、機能しているかどうかを確認してください。

私のおすすめ

 better to use dealloc method rather than using deinit.
于 2016-10-19T04:45:55.753 に答える