2017-08-17 19 views
-1

iOSアプリでメモリリークがあります。私は世代をマークし、新しいVCを開き、以前のVCに戻り、第2のVCのdeinitが呼び出された後に第2世代をマークしました。楽器のリークツールのヒント

私は漏れがあることを機器がはっきりと示しています。しかし、私は何が起こるのか理解するのが難しいです。例えば、下の画像の上に、リークが方法initScrollView()に起こるように見えますが、annotationsは私によると、漏れることができない、という行に93.5%を表示...

私はチュートリアルを探してきましたが、私は「couldn最後の部分について私に啓発する良いものを見つけてください。何が原因で漏れが起こるのかを理解する。私はいくつかの研究が必要であることを知っていても、私はいくつかのヒントとTODOSを持っていたいと思います!ここで

は私のスクリーンショットです:

1)スタックトレース stacktrace

2)注釈 annotations

答えて

0

あなたが最初にすべきことは、メモリリークの原因を見つけるために、リーク機器を使用しています。あなたのスクリーンショットはAllocations楽器からのものです。サンプルの93.5%は、attributedTitleがinitScrollView()関数が割り当てるメモリの93.5%を割り当てていることを示しています。 attributedTitle属性がメモリをリークしているとは言いません。 Instrumentsを使用するあなたのアプローチは正しいです:コールツリービューに切り替え、コールツリーを反転させ、システムライブラリを非表示にします。メモリリークの場合、リーク計測器を使用すると、アプローチがより効果的になります。

Leaksのすべての計測器では​​、コードがリークしたメモリをどこに割り当てるのかがわかります。あなたのコードが漏れたメモリを割り当てる場所は、漏れの原因ではないかもしれませんが、探し始めるのが良い場所です。リークの原因はコードに依存するので、チュートリアルではコード内のリークの原因を教えてくれません。

チュートリアルをお探しの場合はRay Wenderlich's siteに多数のInstrumentsチュートリアルがあります。私はまた、私のブログにInstrumentを紹介する記事を書いています。このブログには、Instrumentsを使うことに関するいくつかの記事があります。

Getting Started with Instruments

関連する問題