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

时间:2014-10-17 11:57:18

标签: ios ios7 ios6 ios8

我在iPad上遇到了所有版本的方向问题。我的应用程序的设计使其支持从ios 6到ios 8。

根据apple的说法, willAnimateRotationToInterfaceOrientation:是从ios8中删除的,我使用 viewWillTransitionToSize:表示ios8。

遇到问题时,我的第一个解决方案是提供宏来确定版本为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

我也检查并运行它..我收到了预期的输出。

但据说代码错了..因为我正在尝试将版本检查转换为编译时决策。版本检查必须是RUNTIME决策。 ios7和ios8代码都必须编译成可执行文件。

所以在没有任何版本检查的情况下更改了以下功能:

-(void)viewWillLayoutSubviews
{
    [super viewWillLayoutSubviews];


    // my code go here without any version check

}

我几乎无法理解 这一行,ios7和ios8代码都必须编译成可执行文件。“ - 这才是真正的意思。

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

此外,如果我想这样做...不使用通知..有没有办法通过版本检查在运行时通过调用这些函数来处理?

请允许我对此发表评论。

0 个答案:

没有答案