【问题标题】:Aviary ios SDK memory not released after dismiss关闭后未释放 Aviary ios SDK 内存
【发布时间】:2013-05-12 14:42:05
【问题描述】:

我在我的应用程序中使用 Aviary SDK 3.0,我将 Aviary 代码放在这样的弹出窗口中,但是在我使用 [popover dismissPopoverAnimated] 关闭弹出窗口后,Aviary 仍在内存堆中,这甚至是真的,即使在我解雇了父视图控制器之后。是否期望在我解雇后清理 Aviary 代码?

在使用时点击照片的动作。我这里介绍一下

    AFPhotoEditorController *editorController = [[AFPhotoEditorController alloc] initWithImage:imageToEdit];
    [editorController setDelegate:self];

    if (popover == nil)
        popover = [[UIPopoverController alloc] initWithContentViewController:editorController];
    else
        [popover setContentViewController:editorController animated:YES];

https://dl.dropboxusercontent.com/u/23238574/Screenshots/aviarypopover.png

【问题讨论】:

    标签: ios uipopovercontroller aviary


    【解决方案1】:

    来自文档:

    “请注意,不建议将控制器推入 UINavigationController 的堆栈,因为照片编辑器本身使用 UINavigationController 的子类。”

    尝试以模态方式呈现它,然后我所做的只是让我对所有内存都被清理感觉更好的是创建一个强大的属性并检查清单

    [editorController removeFromParentViewController];
    editorController.delegate = nil;
    editorController = nil;
    

    关于清除委托的一些东西似乎可以更好地清除我的记忆,虽然,我认为你不需要它。

    还有,别忘了:

    “默认情况下,Aviary 会加载少量 OpenGL 对象以优化 Aviary 产品的启动。”

    [AFOpenGLManager requestOpenGLDataPurge];
    // to request a clear, 
    // "Calls to requestOpenGLDataPurge only apply to the currently loaded OpenGL data,"
    

    您可以将其设置为定期清除

    [AFPhotoEditorCustomization purgeGPUMemoryWhenPossible:YES];
    

    如果你正在这样做,最好预加载一些编辑器,如果你知道他们很快就会使用它

    [AFOpenGLManager beginOpenGLLoad];
    

    【讨论】:

      【解决方案2】:

      此内存泄漏已在 SDK 的后续版本中得到解决。请访问developers.aviary.com获取最新版本。

      【讨论】:

        猜你喜欢
        • 2019-02-01
        • 1970-01-01
        • 2014-05-14
        • 1970-01-01
        • 2012-03-15
        • 2018-12-09
        • 2013-01-02
        • 2011-09-18
        • 2013-02-11
        相关资源
        最近更新 更多