2012-11-28 87 views
1

這可能是一個轉儲問題的一點點,但如何處理面向iOS6中所有折舊的向後兼容性?我目前不確定如何自己處理它們。如何處理所有描述

例子:

UITextAlignment已被棄用,但使用NSTextAlignment將不使用的是iOS 5和前

dismissModalViewControllerAnimated:設備的工作是贊成的dismissViewControllerAnimated: completion:

所以不推薦使用,以及如何可以/應該一個保持與舊版iOS版本的兼容性?有沒有方法在XCode 4.5模擬器中測試舊版本?

感謝您的任何建議!

回答

2

要獲得所有已棄用的方法只需將應用程序的部署目標設置爲iOS 6.0,然後編譯您的代碼,然後您將針對每個棄用的方法獲取警告。

爲了解決棄用使用下列之一:

1-

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


    if(systemVersion < 6.0) 
    { 
     calendarArray = [self.eventStore calendars]; 
    } 
    else 
    { 
     calendarArray = [self.eventStore calendarsForEntityType:EKEntityTypeEvent]; 
    } 

2-用戶respondToSelecter方法來檢測,如果目的是這樣選擇作出響應。

+0

在檢測到已棄用的方法並解決它們之後,請不要忘記將部署目標設置爲原始值 –

+0

感謝您的提示,看起來合理。不知何故,我希望避免這些有條件的檢查。但是我認爲這可能是需要的 – patman

+0

@patman您可以使用預處理程序#if語句來避免應用程序必須處理該語句。它是一個更好的方法去實現它。 – RileyE

0

您可以下載舊的模擬器版本。 Xcode(本地應用程序菜單)>首選項>下載>單擊以安裝所需的模擬器版本。可用版本:4.3,5.0,5.1

+0

4.3在Mountain Lion中不可用,因此您需要一臺Mac OS X的舊版Mac。 – jimpic

+0

好吧,知道這一點。剛剛看到一些醜陋的解決方法! – patman

0

在該方法的情況下,你可以使用respondToSelector:方法來檢測,如果新方法是可用的,例如:

if ([controller respondToSelector:@selector(dismissViewControllerAnimated:completion:)]) { 
    [controller dismissViewControllerAnimated:YES completion:nil]; 
} else { 
    [controller dismissModalViewControllerAnimated:YES]; 
}