如何处理所有的贬低
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];
【讨论】:
以上是关于如何处理所有的贬低的主要内容,如果未能解决你的问题,请参考以下文章