Подтвердить что ты не робот

InitWithFrame: reuseIdentifier: устарел

В моем проекте у меня появилось предупреждение об изъятиях, initWithFrame: reuseIdentifier: устарел

Я не знаю, что это значит, может кто-нибудь скажет мне, как разрешить это предупреждение спасибо

вот короткий код

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

    static NSString *CellIdentifier = @"Cell";

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

    // Set up the cell...
    NSString *cellValue = [itemsList objectAtIndex:indexPath.row];
    cell.textLabel.text = cellValue;

    return cell;
}

и предупреждение находится на этой строке:

cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
4b9b3361

Ответ 1

Взгляните на эту страницу Apple

Здесь Red-Highlighted функции и свойства будут удалены в будущем Apple в предстоящем SDK.

, чтобы мы избегали их при создании приложения.

Поскольку нам нужен долгосрочный проект, который должен работать без сбоев.

устаревший метод означает, что он был заменен/удален, но по-прежнему действителен в текущей версии языка. его следует избегать и вызвать проблемы/ошибки. проверьте документацию, в которой должен быть указан альтернативный метод, который вы можете использовать.

Здесь вы должны использовать метод

 - initWithStyle:reuseIdentifier: 

Тогда ваш цикл if будет выглядеть следующим образом:

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

Ответ 2

Эта проблема появляется в начале разработки IOS 5 Mark, Nutting и La Marche. Некоторые читатели могут приехать сюда из этой книги, где устаревший код появляется на стр. 265. Они могут считать, что ошибка их!

cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier: sectionsTableIdentifier] autorelease];

необходимо заменить на (как указано выше)

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: sectionsTableIdentifier];

Обратите внимание, что я также отключил авторекламу, потому что Auto Reference Counting не нравится!

Надеюсь, что это поможет.

Ответ 3

Используйте этот код:

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

Ответ 4

Это должно решить вашу проблему:

static NSString *SimpleTableIdentifier;

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];

if (cell == nil) {
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
                                   reuseIdentifier:SimpleTableIdentifier] autorelease];
}