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];
4 ответа
Взгляните на страницу этого Apple
Здесь выделенные красным цветом функции и свойства будут удалены Apple в будущем SDK.
так что мы должны избегать их при создании приложения.
Потому что нам нужен долгосрочный проект, который должен работать без сбоев.
устаревший метод означает, что он был заменен / удален, но все еще действует в текущей версии языка. этого следует избегать и может вызвать проблемы / ошибки. проверьте документацию, в которой должен быть указан альтернативный метод, который вы можете использовать.
Здесь вы должны использовать метод
- initWithStyle:reuseIdentifier:
Тогда ваш цикл if будет выглядеть так
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
}
Эта проблема появляется в начале разработки IOS 5 Марком, Наттингом и La Marche. Некоторые читатели могут прийти сюда из той книги, где устарелый код появляется на стр. 265. Они могут предположить, что вина их!
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier: sectionsTableIdentifier] autorelease];
должен быть заменен на (как указано выше авторами)
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier: sectionsTableIdentifier];
Обратите внимание, что я также удалил авто-релиз, потому что функция автоматического подсчета ссылок не нравится!
Надеюсь это поможет.
Используйте этот код:
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:CellIdentifier] autorelease];
Это должно решить вашу проблему:
static NSString *SimpleTableIdentifier;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SimpleTableIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero
reuseIdentifier:SimpleTableIdentifier] autorelease];
}