2012-01-31 29 views
1

我有以下代碼MapKit repsondsToSelector在IOS 4.3.3 setUserTrackingMode

BOOL ios5 = [mapview respondsToSelector:@selector(setUserTrackingMode:animated:)]; 
if(ios5) 
{ 
    if(compass && tracking) 
     [mapview setUserTrackingMode:MKUserTrackingModeFollowWithHeading animated:YES]; 
    else if (tracking) 
     [mapview setUserTrackingMode:MKUserTrackingModeFollow animated:YES]; 
    else 
     [mapview setUserTrackingMode:MKUserTrackingModeNone animated:YES]; 
} 
else 
{ 
    // Do it the version 4.0 way 
} 

它的工作原理取決於我是否有指南針或跟蹤標誌預期和iOS中跟蹤用戶位置5

但是,它也適用於我正在測試的其他設備版本4.3.3。它似乎對選擇器做出了響應,實際上它的行爲與iOS 5中的相同。

這是因爲該功能在iOS 4中,但未公開,我因此遭遇拒絕應用程序的風險?

任何人都可以對此有所瞭解嗎? 謝謝 Donie

回答

1

我相信你在做正確的事情之前先檢查功能,然後再使用它。不管你運行的是什麼版本,API已經記錄在已經。通過這樣做,您可以爲4.3用戶提供向後兼容性。

+0

但我認爲該功能只適用於iOS 5+用戶? API文檔說它是在第5版中引入的。 – d0n13 2012-02-01 02:10:25

+0

您正在使用一個已記錄的API,並且正在執行'respondsToSelector:'檢查來保護沒有IOS 5.0的用戶。你在這裏是一個很好的公民,如果'respondsToSelector'在低於5.0的版本上工作,我認爲這不是你的責任。如果蘋果說,否則我會發現這是不合理的,因爲他們從未在任何文檔中建議檢查設備版本,但他們確實告訴我們應該檢查功能。 – 2012-02-01 03:49:51

+0

謝謝eruainon – d0n13 2012-02-01 12:43:17