【问题标题】:How to check if an iOS SDK deprecated method is no longer working or available?如何检查 iOS SDK 已弃用的方法是否不再有效或可用?
【发布时间】:2012-01-27 00:07:13
【问题描述】:

在 iOS5 中,Apple 已弃用 [UIDevice uniqueIdentifier](参见此处 http://techcrunch.com/2011/08/19/apple-ios-5-phasing-out-udid/

它目前仍然有效,但显然我们希望迁移我们的应用,不再使用它。我们不能放弃冷火鸡,但我们正在推出一种迁移策略,以保留用户数据而不将其绑定到实际的物理设备(我们滥用设备 UDID 的唯一原因)。

This Stack Question gives a great alternative to using the UDID.所以我有一个新的UDID要使用。

我担心那些不费心升级我们的应用程序并最终更新他们的 iOS 版本的用户,这样已弃用的调用不再有效。我们的代码假定 uniqueIdentfier 调用保证始终“工作”。

如何检查 uniqueIdentifier 调用是否成功,如果没有使用上述问题中提供的替代 UDID?

我可以检查 UIDevice 是否响应选择器吗?我可以检查一个 nil UDID 吗?

【问题讨论】:

  • [戴上魔鬼的代言人] 如果您担心如果您的用户不更新到您的应用程序的最新版本,它会因更新版本的 iOS 中断,他们为什么要更新到当不推荐使用的功能不存在时,您的应用程序的较新版本会“优雅地”降级? :D
  • @PeterM:这是一个很好的观点,但不幸的是我无法控制。但我可以控制我已经发现问题的事实,并且我们很快就会发布新版本,所以我可以解决这个问题,至少感觉很好。另外我不确定下一个版本何时发布,它将实施迁移,因此下一个版本应该尽可能强大。
  • 我同意您需要生成尽可能健壮的代码。但是你知道你无法控制你的用户,所以没有必要担心他们,对旧版本采取“搞砸你”(以最好的方式)的态度可以真正解放你的开发工作!
  • 确实如此。我想更大的问题是,我可能暂时无法获得另一个发布工具,所以如果我们不能将用户迁移出 UDID,那么如果/当 UDID 支持被移除时,最新版本不应该中断。

标签: ios deprecated


【解决方案1】:

您可以像往常一样使用respondsToSelector: 进行检查。我已经用 removed in iOS 3.1 的选择器验证了它:

#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 */
}
...

【讨论】:

    猜你喜欢
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多