导入几个ios版本的标题?

时间:2012-01-23 08:45:29

标签: iphone ios header versioning

我只是想知道在导入标题时是否必须检查当前的ios版本。我有一个使用os5框架的应用程序。因此,如果我希望我的应用程序在以前的版本中运行,我是否必须条件导入我的标题?或者我必须在实施中管理它吗?

例如:如果我想使用Twitter / Twitter.h但希望我的应用程序在4.0中运行。 是解决方案:

类似的东西:

#if CURRENT_OS > __IPHONE_5_0
import <Twitter/Twitter.h>
#endif

#import <Twitter/Twitter.h>
... 
- (void) myMethod
{
  NSComparisonResult r = [[[UIDevice currentDevice] systemVersion] compare:@"5.0"];
    if ( r >= 0 ) 
    {
        //do the thing
    }
    else
    {
       // do the workarround

    }
}

提前感谢您的帮助。

BR, Smazimute

1 个答案:

答案 0 :(得分:1)

第一种解决方案仅在编译期间有效。这意味着在运行时检查iOS版本没有用。 您可以使用它来区分同一项目中的两个目标(例如,应用程序的免费和付费版本)。

第二个解决方案在运行时是有效的,所以我认为这是在特定iOS版本上做某事的最佳解决方案,但不幸的是,在导入框架时它没有用处。 要查看iOS版本,请使用以下命令:

[[UIDevice currentDevice] systemVersion]

如果您的目标只是导入旧版iOS不支持的特定框架,那么您拥有的唯一解决方案是弱链接

看看: http://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html