检查ios版本,然后相应地调用uiviewcontroller的函数

检查ios版本,然后相应地调用uiviewcontroller的函数,ios,ios7,ios6,ios8,Ios,Ios7,Ios6,Ios8,我在iPad的所有版本中都遇到了一个定位问题。我的应用程序是这样设计的,它支持从ios 6到ios 8 根据苹果公司的说法,由于WillAnimateRotationInterfaceOrientation:在ios8中被弃用,我在ios8中使用了ViewWillTransitionOnToSize: 当遇到问题时,我的第一个解决方案是提供宏来决定ios 8或更低版本,并相应地执行功能 #ifdef __IPHONE_8_0 // Works on >= version 8.0 - (vo

我在iPad的所有版本中都遇到了一个定位问题。我的应用程序是这样设计的,它支持从ios 6到ios 8

根据苹果公司的说法,由于WillAnimateRotationInterfaceOrientation:在ios8中被弃用,我在ios8中使用了ViewWillTransitionOnToSize:

当遇到问题时,我的第一个解决方案是提供宏来决定ios 8或更低版本,并相应地执行功能

#ifdef __IPHONE_8_0
// Works on >= version 8.0
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
    // my code go here for ios 8
}
#else
// Works on < version 8.0
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration
{
    // my code go here when version is below 8.0
}
#endif
我几乎无法理解这行代码,ios7和ios8代码都必须编译成可执行文件。-这到底意味着什么

想知道为什么我不应该提供编译时决策

如果我想做的话。。。不使用通知。。在运行时通过版本检查调用这些函数,有什么方法可以处理吗


请让我对此发表评论

您似乎混淆了编译时平台检查和运行时检查。@Droppy,我想了解更多有关编译时检查和运行时检查的信息。底线是,相同的二进制文件将在所有受支持的iOS版本下运行,因此您不能在编译时排除方法。更不用说在编译时知道自己运行的是什么版本,只要大声说出来就会告诉你这是错误的。有一个为特定版本的iOS编译的概念,但是它总是>=最低目标版本。在运行时实现这一点并非易事。
-(void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];


    // my code go here without any version check

}