如何仅为 iOS 6 导入社交框架?我想禁用其他 iOS 版本的社交框架。目前我正在尝试这个,我也尝试将 FrameWork 更改为可选,但不在 iOS 5.1 模拟器上运行。
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 6.0)
{
#import <Social/Social.h>
}
请告诉如何检查和运行 iOS 5 和 iOS 6。谢谢。
首先:不要查询操作系统版本来猜测支持的内容,检查特定功能是否实际可用,而不是根据假设使用它。
也就是说,最新版本的 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