1

我有以下问题。

假设我有一个名为“ModuleViewController”的 UIViewController 类,其中包含多个动态创建的 UIButtons 和多个动态创建的 Mpmovieplayercontrollers。这些对象中的每一个都有其回调函数,包含在“ModuleViewController”类中。一个回调用于所有 UIButton,一个用于所有 Mpmovieplayer 控制器。

现在我想在 UIScrollview 中添加多个“ModuleViewController”类实例。 我不使用 ARC。如果我在分配这些对象并在我的“ModuleViewController”类中初始化它们后释放这些对象,则按钮和视频不会播放或应用程序崩溃。

目前我的解决方案是有一个 NSMutableArray 在创建它们时存储它们的指针,然后在我稍后释放“ModuleViewController”类时释放它们。(例如,当它从 UIScrollview 的视口离开屏幕时释放“ModuleViewController”类)

例如。如果我保存指针的数组是“objectsRetained”

// 在 ViewDidLoad 上创建 fPointers 数组

NSMutableArray *objectsRetained = [[NSMutableArray alloc] init];

. . // 在数组中添加对象指针,以便在以后的状态下释放它

[objectsRetained addObject:[NSValue valueWithPointer: myObject]];

该解决方案有效,但是当我分析我的应用程序时,它表明该区域可能存在内存泄漏。

还有其他方法可以解决这个问题吗?

4

1 回答 1

0

首先,使用 ARC。

但在这种情况下,问题似乎出在您的额外NSValue包装器中。直接把按钮放进去就行了NS(Mutable)Array。该数组将为您保留按钮。在-dealloc,呼叫[buttons release]。这将释放按钮。无需将这些东西捆绑到值对象中。

然后切换到 ARC。(但是方法是完全一样的;你只是不需要dealloc。)

于 2013-09-26T13:12:08.560 回答