Objective c 检测Twitter的iOS版本?

Objective c 检测Twitter的iOS版本?,objective-c,xcode,ios5,twitter,oauth,Objective C,Xcode,Ios5,Twitter,Oauth,显然,我对Twitter oAuth(令牌请求)的使用在iOS 5中不起作用。。。我如何将此代码保存在iOS 5以下,并使用iOS 5+的新Twitter框架 是否可以检测iOS版本 谢谢 您(几乎)永远不想查询iOS(甚至是框架)版本。这(通常)意味着你解决了错误的问题 if([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0) { //tweet } 在这种情况下,您真的想知道“我可以使用Twitter.fr

显然,我对Twitter oAuth(令牌请求)的使用在iOS 5中不起作用。。。我如何将此代码保存在iOS 5以下,并使用iOS 5+的新Twitter框架

是否可以检测iOS版本

谢谢

您(几乎)永远不想查询iOS(甚至是框架)版本。这(通常)意味着你解决了错误的问题

if([[[UIDevice currentDevice] systemVersion] floatValue] >= 5.0) {
   //tweet
}
在这种情况下,您真的想知道“我可以使用Twitter.framework吗?”

由于弱链接的魔力,您可以尝试以下方法:

if ([TWTweetComposeViewController canSendTweet]) {
    // Do something
}
else {
    // Use your original code
}
您还可以检查较低级别的框架组件,例如:

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

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

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

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

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

首先,其他答案是正确的——您应该避免使用iOS版本号来检查功能是否存在


然而:若你们确实有一个很好的理由去检查iOS版本,我最喜欢的关于检查iOS版本号的答案是。如此优雅。

现代运行时不需要;只是框架的薄弱环节。通过这种方式,您也可以获得编译时对拼写错误等的检查。请注意,由于浮点转换期间字符串被截断,这对于一般比较来说是不令人满意的。一般来说,任何事情都不应该使用systemVersion。根据IEEE 754-1985标准,浮点数小于7表示的正整数值会被延长。为了证明这一点,从float.h打印出一个FLT_DIG值。我认为我们讨论的是不同的问题: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(对不起,注释是不友好的空白)。我意识到,这就是我所说的“一般比较”(以防将来的读者遇到这一点,并认为这将更广泛地适用)。但(对我来说)更重要的一点是,我能想到使用systemVersion的唯一原因是对未来的不兼容性提出警告;当前的兼容性应该通过特定的运行时检查来建立。您应该查看iOS版本的唯一时间是为了跟踪客户的使用情况。请注意,这也被视为个人识别统计数据,在没有“获得用户收集数据的许可”的公平请求的情况下,不应进行检查,从那时起,您只能将其发送给自己,用于分析目的,而不是发送给第三方。正如下面的回答中提到的,查询功能不是操作系统版本。