我有一個關於iOS 4和5的問題。我真的很困惑,希望有人能爲我清除它。iOS 4和iOS 5向後兼容性
我在我的應用程序中使用iOS 5 SDK。如果我使用由Apple提供的iOS 5 Twitter集成,它是否會在安裝了iOS 4的iPhone上運行?
向後兼容性是否工作?
我已經使用Twitter作爲例子,但向後兼容性真的可以與iOS 5一起使用嗎?
我有一個關於iOS 4和5的問題。我真的很困惑,希望有人能爲我清除它。iOS 4和iOS 5向後兼容性
我在我的應用程序中使用iOS 5 SDK。如果我使用由Apple提供的iOS 5 Twitter集成,它是否會在安裝了iOS 4的iPhone上運行?
向後兼容性是否工作?
我已經使用Twitter作爲例子,但向後兼容性真的可以與iOS 5一起使用嗎?
如果您設置的應用程序正確 ,因此它可以在運行iOS 4的設備上運行而不會崩潰,那麼:是的,它將在安裝了iOS 4的iPhone上運行。
您的應用應該實現邏輯,以便在iOS 5設備上運行應用時使用Twitter API。當應用程序在iOS 4設備上運行時,可以有條件地選擇而不是以使用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
// ...
}
不,如果您使用iOS5中可用的Twitter API,它們將無法在iOS4上運行。
原因是當應用程序在iOS4上運行時,系統將不具備API可用性。
如果您檢查文檔,您可以看到此類/ API可用的iOS版本。
我希望這有助於..
如果您設置的應用程序正確,以便它可以在運行iOS 4設備上運行,它會崩潰。這是因爲您試圖訪問無法使用的方法/功能。 來解決這個問題的方法是檢查是否存在某種功能可以使用
if(NSClassFromString(@"UIPopoverController")) {
// Do something
}
(酥料餅控制器只是一個例子)
您還可以使用檢查版本
float version = [[[UIDevice currentDevice] systemVersion] floatValue];
而且然後根據版本運行特定的一段代碼(即如果iOS 5,瓶坯twitter的東西,否則做一些不同的事情)
'systemVersion'不能保證返回一個可解析的值作爲'float',實際上當前*不*返回完全可解析的值。 – 2012-03-04 16:41:38
你將不得不c依賴於用戶正在使用的iOS版本來取消if。爲例,在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];
}
很好解釋。 – matt 2012-03-04 18:18:44