uipickerview вызывает утечку памяти

Моя проблема в том, что в моем приложении есть утечка памяти, хотя я все делаю правильно. Я разрешаю местный пользователь uipickerviw, назначаю его члену класса (pickerview), а затем освобождаю местный 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
задан RedBlueThing 19 August 2010 в 13:45
поделиться

1 ответ

После самого первого создания / назначения сборщика утечек быть не должно.

Первый раз:

После первой строки счетчик сохранения the_pImagePicker равен 1. После второй строки оно становится равным 2, потому что m_pImagePicker является свойством «сохранить». После последней строки снова становится 1.

Однако, если m_pImagePicker определен как свойство "сохранить", и если вы вызовете этот фрагмент кода еще раз и не освободите self.m_pImagePicker до этого, произойдет утечка памяти:

Второй раз:

Во второй строке вы повторно назначаете указатель self.m_pImagePicker, поэтому объект, на который ссылается self.m_pImagePicker после «Первый раз», будет сброшен со счетчиком сохранения, все еще равным 1 == утечка.

Сначала я бы установил для self.m_pImagePicker значение nil, и перед выполнением вашего кода я бы проверил, остается ли он равным нулю. Если это не так, я бы отпустил его, установил в ноль (просто для согласования с логикой «ноль»), а затем выполнил бы новое присвоение.

2
ответ дан 2 September 2019 в 22:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: