如何导入仅适用于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