iphone - arc 的核心图内存消耗问题

标签 iphone objective-c ios ios6 core-plot

我正在构建一个启用了 ARC 的图形相关应用程序,其中图形上有两个不同的 View : -一个是小 View ,我必须通过单击按钮(使用重新加载数据)来更改它。 - 第二个 View 是较大的 View ,当单击“1 天”、“3 天”、“5 天”等按钮时,图表会发生变化。

我面临的问题是,在连续使用 15-20 分钟后,应用程序崩溃并显示日志...“CAAnimation 无法分配字节”。 当我在 Profile 上分析时,我了解到当加载小图形时,事件字节会跳跃 2-3 mb,而当加载大图形时,事件字节会跳跃 4 到 5 mb,并且事件字节永远不会下降。 我在离开 View 时清空了所有图形对象,但即使这样内存也没有释放。

在切换到下一张图时我调用了这个方法:

-(void)removePlot
{
    for(CPTPlot* plot in [graph allPlots])
    {
        plot.dataSource = nil;
        plot.delegate = nil;
        [plot deleteDataInIndexRange:NSMakeRange(0, plot.cachedDataCount)];
        [graph removePlot:plot];
    }
}

在离开 View 时我调用了这个方法:

-(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;
}

很多人早些时候都遇到过这个问题,但还没有对我有用的答案。 如果有人对此有任何想法...请提供帮助。

最佳答案

尝试阅读这篇文章,它可能会有所帮助。

https://developer.apple.com/library/ios/releasenotes/objectivec/rn-transitioningtoarc/introduction/introduction.html

此外,考虑研究 ARC 提供的 @autoreleasepool 机制以帮助限制最大内存占用。

此外,请确保调用上面列出的方法。有时我们编写了清理例程,但它们没有被调用! :-)

此外,您将代码列为:

axisSet=无 generationPlot=无 ……等……

axisSet 是什么类型? generationPlot 是什么类型?一个全局变量?如果它们不是 NSObjects(有时即使它们是),将它们设置为 nil 可能不是释放它们的正确方法。

考虑将它们中的一些设为@property 并赋予它们适当的限定符(即:strong 等),这样您的一些内存使用情况可能会更清楚一些。如果您有多个静态变量或全局变量可能会造成一些困惑。

希望这对您有所帮助。

关于iphone - arc 的核心图内存消耗问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14141400/

相关文章:

ios - Assets 目录中的 Launch Image 只有 2x 和 R4 的空间

iphone - 与 iOS 上的模型- View - Controller 相关的概念问题

ios - CloudKit fetchUserRecordIDWithCompletionHandler 完成代码未调用?

ios - Swift如何使用nil属性创建和测试对象?

iphone - 如何使用注释降低 MKMapview 的缩放级别?

ios - 使用 Push Transition 效果更改 RootViewcontroller

iphone - 单例属性内存管理

objective-c - 如何使用 iOS、模拟器和设备读取/写入文件?

iphone - 无法更改 iOS 中原型(prototype)单元格的标签

ios - 形状图层的动画路径