2014-01-08 130 views
2

我已經建立了使用Xcode的5支持iOS 6的我的應用程序或above.I希望同樣的應用程序版本上工作不到6 我不使用自動佈局版本。我改變了所有我的nib文件以使用os 4.3或更高版本進行構建。但不推薦使用的方法不適用於舊版本。什麼是支持多個ios版本(在我的情況下爲ios 4.3到ios 7.0)的最佳方式?如何從的iOS 4.3支持的應用程序到iOS 7

+3

爲什麼支持的iOS 4.3,80%是在iOS 7的其餘部分是6,有些是在第5 4.3幾乎不使用。但是,除此之外,是使用NIB並檢查您所調用的方法是否可以在al版本上使用。如果您需要調用某個版本不可用的方法,請使用'respondsToSelector:'來檢查它是否受支持。 – rckoenes

+0

我的要求是支持範圍從ios 4.3到ios 7的設備...... OK使用respondToselector將會知道它是否被支持。如果它不被支持,該怎麼辦? – sujay

+0

看看這個問題... http://stackoverflow.com/questions/12776932/supporting-ios-4-3-to-ios-6-0 –

回答

2

請避免將部署目標設置爲4.3。使用此鏈接目前沒有使用4.3的設備。它的時間

你可以只用本機代碼或廈門國際銀行做,如果你想要做的部署目標應用爲4.3的浪費。

,因爲自動佈局不支持4.3和5.0

stroyboard不支持4.3

enter image description here

https://mixpanel.com/trends/

3

http://www.raywenderlich.com/42591/supporting-multiple-ios-versions-and-devices可以給你很好的建議。文章

短的部分:

不支持類

有時你想使用存在於 你的基地SDK的一類,但不是在你的部署目標。要做到這一點,你需要 在運行時檢查此類的可用性,以避免崩潰 您的應用程序。它崩潰,因爲這是Objetive-C運行時將 如果您嘗試使用不存在的類。從iOS 4.2開始, 類的鏈接很弱,因此您可以使用+類方法執行運行時檢查 。例如:

if ([SLComposeViewController class]) { 
    //Safe to use SLComposeViewController } else { 
    //Fail gracefully } 

不支持的方法

同樣,如果你在你的基地SDK使用的方法並不在部署 目標存在,您可以通過使用避免討厭的崩潰小小的反思。 方法-respondsToSelector:+instancesRespondToSelector:將 都做的伎倆,如下面的代碼示例所示:

if 
([self.image respondsToSelector:@selector(resizableImageWithCapInsets:resizingMode:)]) 
{ 
    //Safe to use this way of creating resizable images } else { 
    //Fail gracefully } 

這同樣適用於檢驗類方法的存在,除非你調用respondsToSelector:在類 本身,像這樣:

if ([UIView 
respondsToSelector:@selector(requiresConstraintBasedLayout)]) { 
    //Safe to use this method } else { 
    //Fail gracefully } 
+0

它不支持4.3上面的鏈接 – codercat

2

我想建議你,首先按版本阻止你的代碼。我的意思是阻止不推薦使用的方法,如IOS 7,IOS 6等。然後嘗試找出該版本支持的適當方法。但據我所知,你不能完全支持像4.3這樣的4.3版。 由於@ rckoenes說80% is on iOS 7 the rest is on 6 and some are on 5. 4.3 is hardly used所以我也不支持6.0以下的支持。所以祝你好運。

相關問題