1

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

例子:

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

dismissModalViewControllerAnimated:也被弃用,有利于dismissViewControllerAnimated: completion:

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

感谢您的任何建议!

4

3 回答 3

2

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

于 2012-11-28T15:50:32.873 回答
0

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

于 2012-11-28T15:15:34.907 回答
0

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

if ([controller respondToSelector:@selector(dismissViewControllerAnimated:completion:)]) {
    [controller dismissViewControllerAnimated:YES completion:nil];
} else {
    [controller dismissModalViewControllerAnimated:YES];
}
于 2012-11-28T15:21:02.040 回答