Значение, сохраненное в ячейке во время ее инициализации, никогда не читается в методе cellForRowAtIndex? - PullRequest
0 голосов
/ 13 декабря 2011

В моем приложении в ячейке табличного представления для метода строки в индексе я использую следующие строки кода. Когда мое приложение предназначено для анализа, я получил следующую утечку

код:

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    //if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    //}

    // Configure the cell...
}

Iполучена ошибка, подобная этой:

Значение, сохраненное в ячейке во время ее инициализации, никогда не читается

Ответы [ 2 ]

2 голосов
/ 31 декабря 2012

Вы инициализируете локальную переменную с именем 'cell' в этой строке:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

и вы сразу же перезапишите это значение в следующей строке:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

Анализатор обращает на это ваше внимание.

В данном конкретном случае это фактически не приведет к утечке. Но это означает, что вы не используете ячейки повторно, и это повлияет на производительность вашего табличного представления.

Если вы хотите удалить это предупреждение и не беспокоиться о производительности UITableView. Затем вам нужно добавить 2-строчный код в приведенный выше код. Пожалуйста, следуйте приведенному ниже коду.

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(cell!=nil)
    cell=nil;
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

Над кодом будет работать отлично и удалить предупреждение.

1 голос
/ 13 декабря 2011

Вы инициализируете локальную переменную с именем 'cell' в этой строке:

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

, а затем немедленно перезаписываете это значение в следующей строке:

cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

Анализатор обращает на это ваше внимание.

В данном конкретном случае это фактически не приведет к утечке.Но это означает, что вы не используете ячейки повторно, и это повлияет на производительность вашего табличного представления.

...