如何处理所有的贬低

Posted

技术标签:

【中文标题】如何处理所有的贬低【英文标题】:How to deal with all the depraciations 【发布时间】:2012-11-28 15:12:48 【问题描述】:

这可能是一个小问题,但是面对 ios6 中的所有折旧,您如何处理向后兼容性?我目前不确定如何自己处理它们。

例子:

UITextAlignment 已弃用,但使用 NSTextAlignment 将无法在使用 iOS 5 及更低版本的设备上运行

dismissModalViewControllerAnimated: 也被弃用,而支持dismissViewControllerAnimated: completion:

那么如何/应该如何保持与旧 iOS 版本的兼容性?有没有办法在 XCode 4.5 模拟器中测试旧版本?

感谢您的建议!

【问题讨论】:

【参考方案1】:

要在代码中获取所有已弃用的方法,只需将应用程序的部署目标设置为 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- USer respondToSelecter 方法来检测对象是否响应此类选择器。

【讨论】:

在检测到不推荐使用的方法并解决它们后,不要忘记将部署目标设置为原始值 感谢您的提示,看起来很合理。不知何故,我希望避免那些条件检查。但我认为这可能是必要的 @patman 您可以使用预处理器#if 语句来避免应用程序必须处理该语句。这是一种更好的方法。 @RileyE 这是真的,但我认为在代码可读性方面几乎相同。至少对于我可以想象自己在以前的版本中定义新常量的常量。 #ifndef NSTextAlignment【参考方案2】:

您可以下载较旧的模拟器版本。 Xcode(本地应用程序菜单)> Preferences > Downloads > 单击以安装所需的模拟器版本。可用版本:4.3、5.0、5.1

【讨论】:

4.3 在 Mountain Lion 中不可用,您需要一台装有旧版 Mac OS X 的 Mac。 好的,很高兴知道这一点。到目前为止,刚刚看到了一些丑陋的解决方法!【参考方案3】:

在方法的情况下,您可以使用respondToSelector: 方法来检测新方法是否可用,例如:

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

【讨论】:

以上是关于如何处理所有的贬低的主要内容,如果未能解决你的问题,请参考以下文章

Nginx 是如何处理 HTTP 头部的?

Nginx 是如何处理 HTTP 头部的?

如何处理危机公关?

如何处理错误?

quantile normalization如何处理数据

在 Perl 中,我如何处理整个哈希?