如何检查iOS SDK弃用方法是否不再有效或可用?

How to check if an iOS SDK deprecated method is no longer working or available?

在iOS5中,苹果公司已经反对使用[UIDevice uniqueIdentifier](见http://techcrunch.com/2011/08/19/apple-ios-5-phasing-out-udid/)

它目前仍然有效,但很明显,我们希望从使用中迁移我们的应用程序。我们不能退出"冷土耳其",但我们正在实施迁移策略,以在不将用户数据与实际物理设备(我们滥用设备udid的唯一原因)联系在一起的情况下保留用户数据。

这个堆栈问题为使用UDID提供了一个很好的选择。所以我有了一个新的UDID。

我担心的是那些不想升级我们的应用程序的用户,他们最终会更新他们的iOS版本,以至于被否决的调用不再有效。我们的代码假定uniqueidentifier调用保证始终"工作"。

如何检查UniqueIdentifier调用是否成功,如果没有使用上面引用的问题中提供的备选UDID?

我可以检查设备是否响应选择器吗?我能查一下无UDID吗?


你可以像往常一样和respondsToSelector:核对。我已经用iOS 3.1中删除的选择器进行了验证:

1
2
3
4
5
6
7
8
9
#import <MediaPlayer/MediaPlayer.h>
...
MPMoviePlayerController *mc = [[MPMoviePlayerController alloc] initWithContentURL:nil];
if ([mc respondsToSelector:@selector(backgroundColor)]) {
    NSLog(@"YES");
} else {
    NSLog(@"NO"); /* under iOS 5 it goes here */
}
...