我對iOS開發並不陌生,剛剛完成了我的第一個使用iOS5 SDK和Xcode 4.2的應用程序。現在的問題是,我的應用程序將要求用戶升級到iOS5,因爲我使用Storyboard API爲應用程序創建UI。 Storyboard僅在iOS5中可用。如何使iOS5應用程序向後兼容iOS4?
我的問題是,如何使我的應用程序向後兼容至少iOS4?是否就像使用nib文件創建UI一樣簡單?有人能給我一個關於如何去做這個例子的指針嗎?
此外,還有其他類似的陷阱,我需要知道這將使我的應用程序向後不兼容?
我對iOS開發並不陌生,剛剛完成了我的第一個使用iOS5 SDK和Xcode 4.2的應用程序。現在的問題是,我的應用程序將要求用戶升級到iOS5,因爲我使用Storyboard API爲應用程序創建UI。 Storyboard僅在iOS5中可用。如何使iOS5應用程序向後兼容iOS4?
我的問題是,如何使我的應用程序向後兼容至少iOS4?是否就像使用nib文件創建UI一樣簡單?有人能給我一個關於如何去做這個例子的指針嗎?
此外,還有其他類似的陷阱,我需要知道這將使我的應用程序向後不兼容?
一般兼容你應該:
弱鏈接框架。例如,Twitter.framework
僅適用於iOS> 5.0,因此請在Xcode的Link Binary with Libraries
部分中將框架標記爲optional
。
導入框架的頭部像往常一樣
#import <Twitter.Twitter.h>
而不是檢查的「是操作系統版本比5.0大」你倒是應該檢查這樣的:
是用類具體名稱:
Class TWTweetClass = NSClassFromString(@"TWTweetComposeViewController");
if (TWTweetClass){
// Use the new stuff
TWTweetComposeViewController *tweetSheet = [[TWTweetComposeViewController alloc] init];
// etc.
} else {
// Handle the case when the class is not available
}
做一個以選擇給定的對象響應:
if([someObject doesRespondToSelector:@selector(someNewlyAvailableSelector:)]){
[someObject performSelector:@selector(someNewSelector:)];
}
這正常工作與Twitter的框架,然而,故事板是在不同的方面,因爲它不像是一個可選的框架,您可以查閱運行。如果你想使用故事板,你的用戶必須至少有iOS 5.0版本。
UIStoryboardSegue僅適用於iOS 5,該應用程序不會在iOS 4上運行。由於它不是編譯時功能,您將不得不返回使用NIB。
你使用任何方法,這些方法只能在iOS 5中可不會在iOS 4的工作,因此這意味着,如果你想成爲向後與故事板處理任何方法都無法在iOS中工作4
你應該看看https://github.com/doubleencore/DETweetComposeViewController。它是兼容iOS4的TWTweetComposeViewController的重新實現。
在低於4.0的Xcode中打開項目,編譯並查看..其中顯示了差異.. – vishy 2012-01-17 08:54:16
請考慮是否值得爲新應用程序付出努力。多少應用購買用戶羣(而不是普通用戶羣)已經或將會保留在iOS4上?如果你使用故事板,你正在尋找一個重要的改寫。 – jrturton 2012-01-17 08:59:10