如何导入仅适用于iOS 6的社交框架?

如何导入仅适用于iOS 6的社交框架? 我想要禁用其他iOS版本的社交框架。 目前我正在尝试这个,我也试图改变框架可选,但不能在iOS 5.1模拟器上运行。

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0) { #import <Social/Social.h> } 

请告诉如何检查和运行iOS 5和iOS 6.谢谢。

首先:不要查询操作系统版本猜测什么是支持的,检查一个特定的function是否实际可用,而不是基于假设使用它。

也就是说,最近的iOS版本和工具链支持弱链接。 只是检查您打算使用的类不是Nil (方法#1)。 你也可以使用这个Objective-C运行时(方法#2):

 // method #1 - weak linking if ([SLRequest class] != Nil) { // Social.framework is available } // method #2 - querying the runtime if (NSClassFromString(@"SLRequest") != Nil) { // Social.framework is available } 

为了使弱连接生效,你打算使用的框架应该被添加为“可选”而不是“必需”。 如果您不使用Xcode或IDE而只使用命令行工具链,则可以通过传递来强制执行弱连接

 -flat_namespace -undefined dynamic_lookup 

链接器。

 #import <Avaibility.h> #if defined(__IPHONE_6_0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0 #import <Social/Social.h> #import <Accounts/Accounts.h> #elif defined(__IPHONE_5.0) && __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_5_0 #import <Twitter/Twitter.h> #import <Accounts/Accounts.h> #else #error Your SDK is too old ! Need at least 5.0. #endif