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];
Ответы
Ответ 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];
}