グラフに2つの異なるビューがあるARCを有効にしてグラフ関連のアプリを構築しています:-1つはボタンをクリックして変更する必要がある小さなビューです(データのリロードを使用)。-2番目のビューは、「1日」、「3日」、「5日」などのボタンをクリックするとグラフが変化する大きなビューです。
私が直面している問題は、15 ~ 20 分間連続して使用した後、アプリケーションがログでクラッシュすることです....「CAAnimation はバイトの割り当てに失敗しました」。プロファイルを分析すると、小さなグラフがライブ バイトをロードすると 2 ~ 3 mb ジャンプし、大きなグラフがライブ バイトをロードすると 4 ~ 5 mb ジャンプし、ライブ バイトがダウンしないことがわかりました。ビューを離れるときにすべてのグラフ オブジェクトを削除しましたが、それでもメモリは解放されません。
次のグラフに切り替えるときに、このメソッドを呼び出しています。
-(void)removePlot
{
for(CPTPlot* plot in [graph allPlots])
{
plot.dataSource = nil;
plot.delegate = nil;
[plot deleteDataInIndexRange:NSMakeRange(0, plot.cachedDataCount)];
[graph removePlot:plot];
}
}
そして、ビューを離れるときに、このメソッドを呼び出しています:
-(void)removeGraph
{
[axisSet removeFromSuperlayer];
axisSet=nil;
[self removePlot];
generationPlot=nil;
[graph removePlotSpace:plotSpace];
plotSpace=nil;
[graph removeFromSuperlayer];
graph=nil;
[hostView removeFromSuperview];
hostView=nil;
headerList=nil;
graphDetailList=nil;
graphList=nil;
dataList=nil;
plotsArray=nil;
}
多くの人が以前にこの問題に直面しましたが、私にとってはまだ答えがありません。これに関するアイデアがあれば...助けてください。