0

NSMutableArray以外のARCに関する質問があります。私は、リストビューのすべての要素が含まれているNSMutableArrayの(arr1)とリストビューを持っているiOS - ARCで混乱し、オブジェクトのNSMutableArrayをクリアする

はここケースです。別のスレッドはネイティブコードで実行され、目的関数-c ListViewにコールバックを行います。ネイティブコードは新しいNSMutableArray(arr2)を作成し、それを私のカスタムクラス(各要素は名前、ID、アイコンなどがあります)の要素で埋めて、それをListViewに渡します。

リストビューでは、最初に[arr1 removeAllObjects]で配列をクリアしてから、arr2からarr1までの各要素を[arr1 addObject: ..]に追加します。

NOTES

*すべてのコード、ネイティブとObjective-Cの両方が、オブジェクティブC++コードとしてコンパイルされます。

* allocsとinitのarr2(およびそのすべての要素)とリストビューのものを呼び出しますが、すべての@autoreleasepoolディレクティブ

私の質問の下にあることをネイティブコード部と、

  1. ネイティブコードからのメモリリークはありますか?

  2. ListViewコードからのメモリリークはありますか? [arr1 removeAllObjects]でリリースした古い要素はメモリリークの原因になりますか?

  3. @autoreleasepoolはARCと同じ機能を提供しますか?つまり、オブジェクトを明示的に解放する必要はありませんか?

+0

漏れがあるかどうかを機器でチェックしてみませんか? – larsacus

答えて

1

1)ありませんが、ときどき小さなリークがあります(私はキーチェーンといくつかのオーディオライブラリを見たことがあります)。対処するのはあなたの問題ではなく、ほとんどの場合、解決することは不可能です。

2)​​は、アレイ内のすべてのオブジェクトにリリースを送信します。これは、deallocメソッドにブレークポイントを設定することで確認できます。あなたは上記きた状況は私には安全に見える@autoreleasepool同じ

を作品

3)はいARC。

+0

Wonderfull、ありがとう – KaiserJohaan

1

ネイティブコードから任意のメモリリークはありますか?

リリース/自動解放が不足しているため

ない(あなたは、weak/strong propertiesで議論hereになります)

は、ListViewコントロールのコードから任意のメモリリークはありますか? [] [arr1 removeAllObjects]で古い要素がメモリリークを引き起こしますか?

私は文句を言わない、明示的にオブジェクトを解放する必要が 意味、ARCと同じ機能を提供@autoreleasepoolしていますか?

ARCでオブジェクトを解放することはできません。 autoreleasepoolは、閉じた中括弧の後に、その中に割り当てられたオブジェクトが確実に破棄されるようにします(それぞれのパスにたくさんのものを割り当てるforループがあり、それぞれの間ですべてがクリーンアップされるようにしたい場合に便利です) 、 例えば)。

+0

Wonderfull、ありがとう – KaiserJohaan

関連する問題