Получение утечки памяти в textFields - PullRequest
0 голосов
/ 04 февраля 2010

Здесь я получаю утечку памяти на

eventTextField.keyboardAppearance  = UIKeyboardAppearanceDefault;

Я объявил текстовое поле глобально и выделил текстовое поле в CellForRowAtIndex, и мой код:

if(indexPath.section == 1)
{
    eventTextField = [[UITextField alloc]initWithFrame:CGRectMake(10, 15, 300, 50)];
    eventTextField.placeholder = @"Event Name:";
    [eventTextField setFont:[UIFont boldSystemFontOfSize:14]];
    eventTextField.returnKeyType = UIReturnKeyNext;
    eventTextField.keyboardAppearance  = UIKeyboardAppearanceDefault;
    eventTextField.keyboardType = UIKeyboardTypeDefault;
    eventTextField.delegate=self;
    if(isRightButton == YES)
    {
        eventTextField.enabled = NO;
    }
    else
    {
        eventTextField.enabled = YES;
    }
    if([event.eventName length] > 0)
    {
        eventTextField.text = event.eventName;
    }
    else
    {
        eventTextField.text = @"";
    }
    [elementView addSubview:eventTextField];
    cell.accessoryType = UITableViewCellAccessoryNone;
}

и я освобождаю текстовое поле в dealloc. когда я проверяю распределение объектов, он показывает утечку в: eventTextField.keyboardAppearance = UIKeyboardAppearanceDefault;

ребята, пожалуйста, помогите мне выбраться из этого. Любая помощь будет оценена.

Спасибо, Мониш Кумар.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2010

Просто добавьте:

[eventTextField release]

после:

[elementView addSubview:eventTextField];

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

Золотое правило : Каждый раз, когда вы звоните alloc или copy или retain ,Вы всегда должны звонить release (или autorelease ).

0 голосов
/ 20 февраля 2010

Я бы сказал, это потому, что каждый раз, когда вызывается cellForRowAtIndexPath get, вы выделяете память для eventTextField, без предварительного освобождения того, что у вас было раньше.

Проверьте, равен ли eventTextField нулю, перед выполнением alloc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...