2012-01-31 8 views
1

I持って、次のコードMapKit repsondsToSelector 4.3.3

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 
} 

それ私はコンパスを持っているかにフラグを追跡するかどうかに応じて予想および5

IOSのユーザの位置を追跡するように動作します

しかし、私がテストしている他のデバイスであるバージョン4.3.3でも動作します。セレクタに反応して、実際にはiOS 5と同じように動作しているようです。

これは機能がiOS 4で公開されていないためで、その理由で拒否される危険性がありますか?

誰もがこれにいくつかの光を当てることができますか? おかげ Donie

答えて

1

は、私はあなたがそれを使用する前に、最初の機能をチェックして正しいことをやっていると信じています。実行しているバージョンは関係ありません。そのAPIはで、すでにと記載されています。このようにすることで、4.3ユーザーに下位互換性を提供します。

+0

しかし、この機能はiOS 5以降のユーザーだけが利用できると思っていましたか? APIドキュメントには、バージョン5で導入されたと書かれています。 – d0n13

+0

文書化されているAPIを使用していて、IOS5.0を持たないユーザを保護するために 'respondsToSelector:'チェックを行っています。あなたはここで良い市民であり、 'respondsToSelector'が5.0より下のバージョンで動作するなら、あなたの責任とは思わないでしょう。私は、Appleが別の言葉でデバイスのバージョンをチェックするようアドバイスしたことがないので、それが不合理であると思うが、代わりに機能を確認する必要があると私たちに伝えている。 –

+0

ありがとうeruainon – d0n13