iPhone SDK 3.0 против 2.2.1 - PullRequest
       10

iPhone SDK 3.0 против 2.2.1

4 голосов
/ 27 июня 2009

Я только что установил iPhone SDK 3.0 и обнаружил, что текстовое свойство UITableViewCell больше не используется, и вместо него следует использовать textLabel.text. Означает ли это, что я должен знать текущую версию системы и вызывать соответствующий метод? как это.

UITableViewCell *cell = ...;
if ([[[UIDevice currentDevice] systemVersion] isEqualToString:@"3.0"]) {
  cell.textLabel.text = @"...";
} else {
  cell.text = @"...";
}

Если это так, это было бы очень неприятно.

Ответы [ 6 ]

4 голосов
/ 28 июня 2009

Вместо проверки версии ОС вы можете проверить, имеет ли ячейка новое свойство:

if ([cell respondsToSelector:@selector(textLabel)]) {
  // Do it the 3.0 way
  cell.textLabel.text = @"...";
} else {
  // Do it the 2.2 way, but avoid deprecation warning
  [cell performSelector:@selector(setText:) withObject:@"..."];
}
3 голосов
/ 28 июня 2009

Просто соберите для 3.0 и больше не беспокойтесь о 2.2. В отличие от крупных обновлений ОС, люди очень, очень быстро переходят на новую версию iPhone OS. Прочтите этот пост в блоге TapBots: Уровень принятия iPhone 3.0 .

К тому времени, когда ваше приложение будет одобрено (через 2 недели + немного?), Почти никто больше не будет использовать 2.2!

1 голос
/ 28 июня 2009

Это устарело, и они предлагают новый способ, но вы, конечно, можете использовать 2.2, если хотите, и это не окажет негативного влияния на ваше приложение, работающее на 3.0. Если вы беспокоитесь о пользователях, все еще работающих на 2.2, обязательно проверьте приведенную ссылку. Я не думаю, что это будет иметь большое значение, если вы скомпилируете для 3.0.

1 голос
/ 28 июня 2009

Вы можете использовать 3.0 SDK и нацеливать более старую версию на свои проекты, например 2.2 или 2.2.1.

Для этого вы установите Base SDK на 3.0, но измените настройку цели развертывания iPhone OS. Обе настройки доступны, если вы получаете информацию о проекте.

0 голосов
/ 28 июня 2009

Если вы решили придерживаться версии 2.2, обязательно протестируйте в симуляторе версию 3.0. Мы видели странные поведенческие различия между 2.2 и 3.0, особенно с таблицами.

0 голосов
/ 28 июня 2009

На самом деле, я не думаю, что вы должны это делать, потому что, когда вы создаете свой проект, вы выбираете, на какую прошивку он нацелен, как упоминалось в pgb. Тогда вы можете просто использовать директивы #ifdef. Вот дополнительная информация: Версия прошивки для проверки iPhone Более подробный ответ выложен здесь: Как настроить таргетинг на конкретную версию iPhone?

РЕДАКТИРОВАТЬ : Я удалил некоторый текст после того, как понял, что systemVersion на самом деле является строкой, источник: UIDevice Docs .

Если вы будете использовать его в различных файлах по всему проекту, вы можете организовать его, добавив его в качестве свойства в ваш appdelegate, и они получат значение, выполнив что-то вроде этого:

MyAppDelegate *theDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
NSString *version = theDelegate.version;

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

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