Обратная совместимость iOS 4 и iOS 5 - PullRequest
2 голосов
/ 04 марта 2012

У меня есть вопрос, касающийся iOS 4 и 5. Я действительно растерялся и надеюсь, что кто-нибудь прояснит это для меня.

Я использую iOS 5 SDK в своем приложении. Если я использую интеграцию Twitter с iOS 5, предоставляемую Apple, будет ли она работать на iPhone с установленной iOS 4?

Работает ли обратная совместимость?

Я использовал Twitter в качестве примера, но действительно ли обратная совместимость действительно работает с iOS 5?

Ответы [ 4 ]

10 голосов
/ 04 марта 2012

Если вы правильно настроили свое приложение , чтобы оно могло работать на устройствах под управлением iOS 4 без сбоев, тогда: да, оно будет работать на iPhone с установленной iOS 4.

Ваше приложение должно реализовывать логику таким образом, чтобы API Twitter использовалось при запуске приложения на устройстве iOS 5. Когда приложение работает на устройстве iOS 4, вы можете условно выбрать , а не , чтобы использовать API Twitter.

Вместо этого вы можете использовать другую библиотеку Twitter (например, MGTwitterEngine или вашу собственную) - или просто исключить функциональность Twitter для этих пользователей.

Чтобы проверить, существует ли класс TWRequest, используйте NSClassFromString.

Class twRequestClass = NSClassFromString(@"TWRequest");
if (twRequestClass == nil) {
    // TWRequest does not exist on this device (running iOS version < 5.0)
    // ... do something appropriate ...
} else {
    TWRequest *twRequest = [[twRequestClass alloc] init];
    // ^ I didn't look up the proper initializer, so you should change that line if necessary
    // ...
}
4 голосов
/ 04 марта 2012

Вам придется создавать ifs в зависимости от версии iOS, которую использует пользователь. Например, в iOS 5 есть API внешнего вида для изменения большей части пользовательского интерфейса, но не в iOS 4, поэтому вам нужно создать немного, если это так:

// not supported on iOS4
UINavigationBar *navBar = [myNavController navigationBar];
if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
{
    [navBar setBackgroundImage:[UIImage imageNamed:@"bg.jpg"] forBarMetrics:UIBarMetricsDefault];
} 
3 голосов
/ 04 марта 2012

Если вы правильно настроили свое приложение, чтобы оно могло работать на устройствах под управлением iOS 4, оно зависнет. Это потому, что вы пытаетесь получить доступ к методам / функциям, которые недоступны. Чтобы обойти это, нужно проверить, доступна ли функция, используя

if(NSClassFromString(@"UIPopoverController")) {
// Do something
}

(контроллер всплывающего окна - только пример)

Вы также можете проверить версию, используя

float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 

И затем, в зависимости от версии, запустите определенный фрагмент кода (то есть, если iOS 5, преформуйте твиттер, иначе делайте что-то другое)

1 голос
/ 04 марта 2012

Нет, если вы используете API-интерфейсы Twitter, доступные в iOS5, они не смогут работать на iOS4.

Причина в том, что когда приложение будет работать на iOS4, система не будет иметь API-интерфейсы.Наличие.

Если вы посмотрите документацию, вы увидите версию iOS, из которой доступен этот класс / API.enter image description here

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

...