2012-04-04 79 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。如此優雅。