所以我使用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.
}
}
Run Code Online (Sandbox Code Playgroud)
通过上面的代码,当我在iOS 5.1模拟器或iOS 5.1设备上运行它时,iOS 6分支就会运行.但是,如果我使用
Class mapClass = NSClassFromString(@"PKPass");
Run Code Online (Sandbox Code Playgroud)
这也是在iOS 6中引入的,我的代码遵循相应的iOS 5或iOS 6分支.我错过了什么吗?谢谢.
bry*_*yle 10
MKMapItem存在于iOS的早期版本中,因为它当时处于开发阶段,因此该类存在.相反,Apple建议您使用以下代码并检查他们在iOS 6.0中专门添加的方法:
Class itemClass = [MKMapItem class];
if (itemClass && [itemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)]) {
// Use class
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
685 次 |
| 最近记录: |