iOS 4和iOS 5向后兼容

时间:2012-03-04 16:34:15

标签: ios5 ios4 backwards-compatibility

我对iOS 4和5有疑问。我真的很困惑,希望有人能为我清除它。

我在我的应用程序中使用iOS 5 SDK。如果我使用Apple提供的iOS 5 Twitter集成,它是否会在安装了iOS 4的iPhone上运行?

向后兼容性是否有效?

我使用Twitter作为示例,但向后兼容性是否真的适用于iOS 5?

4 个答案:

答案 0 :(得分:10)

如果您正确设置 ,那么它可以在运行iOS 4的设备上运行而不会崩溃,那么:是的,它将在安装了iOS 4的iPhone上运行。

您的应用应该实现逻辑,以便在iOS 5设备上运行应用时使用Twitter API。当应用程序在iOS 4设备上运行时,您可以有条件地选择 not 来使用Twitter API。

相反,您可以使用不同的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
    // ...
}

答案 1 :(得分:4)

您必须根据用户使用的iOS版本创建ifs。例如,在iOS 5中有一个Appearance API来修改大部分UI,但不是在iOS 4中,所以你必须创建一个如果是这样的:

// not supported on iOS4
UINavigationBar *navBar = [myNavController navigationBar];
if ([navBar respondsToSelector:@selector(setBackgroundImage:forBarMetrics:)])
{
    [navBar setBackgroundImage:[UIImage imageNamed:@"bg.jpg"] forBarMetrics:UIBarMetricsDefault];
} 

答案 2 :(得分:3)

如果你正确设置你的应用程序,以便它可以在运行iOS 4的设备上运行,它将崩溃。这是因为您正在尝试访问不可用的方法/功能。 解决这个问题的方法是使用

检查功能是否可用
if(NSClassFromString(@"UIPopoverController")) {
// Do something
}

(Popover控制器只是一个例子)

您还可以使用

检查版本
float version = [[[UIDevice currentDevice] systemVersion] floatValue]; 

然后根据版本运行一段特定的代码(例如,如果iOS 5,预先形成Twitter的东西,否则做一些不同的事情)

答案 3 :(得分:1)

不,如果您使用iOS5中提供的Twitter API,它们将无法在iOS4上运行。

原因是当app在iOS4上运行时,系统将无法获得API。

如果您查看文档,则可以看到此类/ API可用的iOS版本。 enter image description here

我希望这会有所帮助..