我有以下问题。
假设我有一个名为“ModuleViewController”的UIViewController类,它包含多个动态创建的UIButtons和多个动态创建的Mpmovieplayer控制器。这些对象中的每一个都有其Callback函数,包含在“ModuleViewController”类中。所有UIButton和一个所有Mpmovieplayer控制器都有一个回叫。
现在我想在UIScrollview中添加多个“ModuleViewController”类实例。 我不使用ARC 。如果我在分配它们并在我的“ModuleViewController”类中初始化它们之后释放这些对象,则按钮和视频不会播放或者应用程序崩溃。
目前我的解决方案是让NSMutableArray在创建时存储它们的指针,然后在我以后的状态下释放“ModuleViewController”类时释放它们。 (e.x。从UIScrollview的视口离开屏幕时释放“ModuleViewController”类)
例如。如果我的数组包含指针是“objectsRetained”
//在ViewDidLoad上创建fPointers数组
NSMutableArray *objectsRetained = [[NSMutableArray alloc] init];
。 。 //在数组中添加对象指针,以便在以后的状态下释放它
[objectsRetained addObject:[NSValue valueWithPointer: myObject]];
这个解决方案有效,但是当我分析我的应用程序时,它表明该区域存在可能的内存泄漏。
还有另一种解决方法吗?
答案 0 :(得分:0)
首先,使用ARC。
但在这种情况下,问题似乎出现在额外的NSValue
包装器中。只需将按钮直接放在NS(Mutable)Array
中即可。该阵列将为您保留按钮。在-dealloc
中,致电[buttons release]
。这将释放按钮。没有必要将这些东西捆绑到值对象中。
And then switch to ARC.(但方法完全相同;那么你只需要dealloc
。)