2012-04-04 81 views
1

显然,我使用Twitter oAuth(令牌请求)在iOS 5中不起作用......我如何将此代码保存在iOS 5以下的任何内容中并使用iOS 5 +的新Twitter Framework?检测Twitter的iOS版本?

是否可以检测iOS版本?

谢谢!

+0

您应该查看iOS版本的唯一时间是跟踪客户使用情况。请注意,这也被视为个人身份验证统计信息,如果没有公平请求“获取用户的数据收集权限”,则不应对其进行审查,并且从那时起,您只能将其发送给自己,以便进行分析,而不是发送给第三方。正如下面的答案中所述,查询功能不是操作系统版本。 – 2012-04-04 14:36:08

回答

6

你(几乎)不想查询iOS(甚至框架)版本。那(通常)意味着你正在解决错误的问题。

在这种情况下,你真的想知道“我可以使用Twitter.framework吗?”

由于弱链接的魔力,你可以尝试这样的:

if ([TWTweetComposeViewController canSendTweet]) { 
    // Do something 
} 
else { 
    // Use your original code 
} 

您还可以检查较低层次的框架组件,例如:

if ([TWRequest class]) { 
    // Do something 
} 
else { 
    // Use your original code 
} 

(很显然,您需要链接与Twitter.framework并包括必要的标题)。

1
if([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0) { 
    //tweet 
} 
+0

请注意,由于浮点转换期间的字符串截断,这对于一般比较而言并不令人满意。总之,不管怎样,你都不应该使用systemVersion。 – 2012-04-04 08:31:06

+0

根据IEEE 754-1985标准,浮点数小于7表示的正整数值被保证延长。为了证明它,从float.h中输出一个FLT_DIG值。 – jacekmigacz 2012-04-04 08:40:56

+0

我想我们正在谈论不同的问题: NSString * v1 = @“5.1”; NSString * v2 = @“5.1.1”; NSLog(@“%@大于%@:%d”,v2,v1,([v2 floatValue]> [v1 floatValue])); 2012-04-04 01:41:44.795 VersionTest [3624:f803] 5.1.1大于5.1:0 – 2012-04-04 08:42:32

0

检测Twitter类是否在安装的操作系统中:

if (NSClassFromString(@"TWTweetComposeViewController")) { 
    //use Twitter Framework 
} 

不要忘记在框架列表中使Twitter框架可选。

+0

现代运行时不需要;只是薄弱环节的框架。通过这种方式,您也可以进行编译时检查拼写错误等。 – 2012-04-04 08:22:21

1

首先,其他答案是正确的 - 您应该避免使用iOS版本号来检查功能是否存在。然而,如果你确实有充足的理由来检查iOS版本,我最常用的检查iOS版本号的回答是this StackOverflow answer。如此优雅。