您应该始终更喜欢检测可用的方法/功能,而不是 iOS 版本,然后假设方法可用。
See 苹果文档.
例如,在 iOS 5 中要显示模态视图控制器,我们会这样做:
[self presentModalViewController:viewController animated:YES];
在 iOS 6 中,presentModalViewController:animated:
的方法UIViewController
已弃用,您应该使用presentViewController:animated:completion:
在 iOS 6 中,但是你怎么知道何时使用什么?
您可以检测 iOS 版本,并使用 if 语句指示您使用前者还是后者,但是,这是脆弱的,您会犯错误,也许将来更新的操作系统将有一种新的方法来执行此操作。
处理这个问题的正确方法是:
if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
[self presentViewController:viewController animated:YES completion:^{/* done */}];
else
[self presentModalViewController:viewController animated:YES];
您甚至可以争辩说您应该更加严格并做类似的事情:
if([self respondsToSelector:@selector(presentViewController:animated:completion:)])
[self presentViewController:viewController animated:YES completion:^{/* done */}];
else if([self respondsToSelector:@selector(presentViewController:animated:)])
[self presentModalViewController:viewController animated:YES];
else
NSLog(@"Oooops, what system is this !!! - should never see this !");
我不确定你的UIActionSheet
例如,据我所知,这在 iOS 5 和 6 上是相同的。也许您正在考虑UIActivityViewController
进行分享,您可能想回退到UIActionSheet
如果您使用的是 iOS 5,那么您可以检查课程是否可用,请参阅here如何做到这一点。