uipickerview导致内存泄漏

时间:2010-08-19 13:13:28

标签: iphone uipickerviewcontroller

我的问题是我的应用程序中存在内存泄漏,即使我正在做正确的事情。我正在分配一个本地uipickerviw,将其分配给类成员(pickerview)然后我dealloc本地uipickerview。我仍然得到内存泄漏。我明白了。有人帮助我。

UIImagePickerController *the_pImagePicker=[[UIImagePickerController alloc] init];
//memory leak is displayed on this line.
self.m_pImagePicker = the_pImagePicker;
self.m_pImagePicker.delegate = self;    
[the_pImagePicker release];

1 个答案:

答案 0 :(得分:2)

在第一次创建/分配选择器后,不应该有任何泄漏。

第一次:

在第一行之后,the_pImagePicker的保留计数为1。 在第二行之后它变为2,因为m_pImagePicker是“retain”属性。 在最后一行之后,它再次下降到1。

但是,如果将m_pImagePicker定义为“retain”属性,并且如果再次调用此段代码并且之前不释放self.m_pImagePicker,则会泄漏内存:

第二次:

在第二行重新分配self.m_pImagePicker指针,因此self.m_pImagePicker在“First time”之后引用的对象将被转储,而retain counter仍然等于1 == leak。

我最初会将self.m_pImagePicker设置为nil,在执行代码之前会检查它是否仍为nil。如果不是,我会释放它,将其设置为nil(只是为了与“nil”逻辑一致)然后执行新的赋值。