MKMapItem在iOS 5中得到认可?

时间:2012-09-20 03:15:11

标签: iphone mkmapitem

所以我使用NSClassFromString检查用户是否安装了iOS 5或iOS 6以使用Apple的新iOS 6 MKMapItem。这是代码:

- (void)openDirections:(id)sender {
    Class mapClass = NSClassFromString(@"MKMapItem"); 

    if (mapClass == nil) {
    // iOS 5, do something here
    }
    else {
    // iOS 6, open up maps with MKMapItem.
    }
}

通过上面的代码,当我在iOS 5.1模拟器或iOS 5.1设备上运行时,iOS 6分支就会运行。但是,如果我使用

Class mapClass = NSClassFromString(@"PKPass");

也是在iOS 6中引入的,我的代码遵循相应的iOS 5或iOS 6分支。我错过了什么吗?感谢。

1 个答案:

答案 0 :(得分:10)

MKMapItem存在于iOS的早期版本中,因为它当时处于开发阶段,因此该类存在。相反,Apple建议您使用以下代码并检查他们在iOS 6.0中专门添加的方法:

Class itemClass = [MKMapItem class];
if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {
   // Use class
}

来自MKMapItem Class Reference

的信息