Iphone 如何处理所有的种族歧视

Iphone 如何处理所有的种族歧视,iphone,objective-c,ios,ios6,Iphone,Objective C,Ios,Ios6,这可能有点像垃圾问题,但是面对iOS6中的所有贬值,您如何处理向后兼容性?我目前还不确定自己该如何处理这些问题 示例: UITextAlignment已被弃用,但使用NSTextAlignment将无法在使用iOS 5及更早版本的设备上运行 dismissModalViewControllerAnimated:也被弃用,取而代之的是dismissViewControllerAnimated:completion: 那么,如何/应该保持与旧iOS版本的兼容性呢?有没有办法在XCode 4.5模拟器

这可能有点像垃圾问题,但是面对iOS6中的所有贬值,您如何处理向后兼容性?我目前还不确定自己该如何处理这些问题

示例:

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

dismissModalViewControllerAnimated:
也被弃用,取而代之的是
dismissViewControllerAnimated:completion:

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


谢谢你的建议

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

对于这些方法,您可以使用
响应选择器:
方法来检测新方法是否可用,例如:

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

要在代码中获取所有不推荐的方法,只需将应用程序的部署目标设置为iOS 6.0,并编译代码,然后每个不推荐的方法都会收到警告

要解决弃用问题,请使用以下方法之一:

1-

float-systemVersion=[[[UIDevice-currentDevice]systemVersion]floatValue];
如果(系统版本<6.0)
{
calendarArray=[self.eventStore日历];
}
其他的
{
calendarArray=[self.eventStore CalendarsForentyType:eEntityTypeEvent];
}

2-用户
respondtoselector
方法来检测对象是否响应此类选择器。

4.3在Mountain Lion中不可用,您将需要一个带有旧mac OS X的mac。好的,很高兴知道这一点。到目前为止,我只是看到了一些丑陋的解决办法!在检测到不推荐的方法并解决它们之后,不要忘记将部署目标设置为原始值感谢提示,看起来很合理。不知何故,我希望避免那些有条件的检查。但我想可能是这样nescesary@patman您可以使用预处理器#if语句,以避免应用程序必须处理该语句。“这是一种更好的方法。”RileyE说的没错,但我认为在代码可读性方面也差不多。至少对于我可以想象的常量,我自己可以在以前的版本中定义新的常量<代码>#如果NDEF NSTEXTALIGNING
float systemVersion = [[[UIDevice currentDevice]systemVersion]floatValue];


    if(systemVersion < 6.0)
    {
        calendarArray = [self.eventStore calendars];
    }
    else
    {
        calendarArray = [self.eventStore calendarsForEntityType:EKEntityTypeEvent];
    }