2012-04-19 47 views
0

如果我使用的功能在當前SDK版本中已被棄用,編譯器會警告它。 我找到了一個反對它的功能。如何在iOS編譯時檢查一個特性的介紹?

如果我使用的是不特定的SDK版本中定義一個類或方法,編譯器警告一下吧。

如何獲得此功能?我試圖通過把定義在這樣的前綴頭定義__IPHONE_OS_VERSION_MAX_ALLOWED

#undef  __IPHONE_OS_VERSION_MAX_ALLOWED 
#define  __IPHONE_OS_VERSION_MAX_ALLOWED   40000 

但它捕獲任何即使是在SDK自身版本不匹配的。 (如UIKit

我正在庫代碼需要爲iOS 4.0向後兼容性,我要一些自動化方法來檢查向後兼容性。我知道功能可用性測試並不能解決所有問題,但這會使工作變得更容易。

我如何檢查特定的SDK版本的編譯器功能的可用性?

回答

0

這聽起來像respondsToSelector,在那裏你可以檢查,看看是否在您當前正在運行的操作系統存在一個選擇的工作。

但是,如果你真的想未來證明你的應用程序,你應該總是爲你想支持的最低OS版本中定義的最新API。

Here is a related question about 'respondsToSelector' that may help you out

+0

對於不清楚的問題,我很抱歉,但我需要的是在編譯時自動向後兼容性測試。不管怎麼說,還是要謝謝你。 – Eonil 2012-04-19 07:05:27

0

我想你需要的是在嘗試使用NSClassFromString之前檢查一個類(特性)。

Class myClass = NSClassFromString(@"CLassThatYouWantToUse"); //get the class object 
if (myClass != nil) 
    { 
     // The device will support this class.. so carry on... 
    } 
else 
     { 
      // The device doesn't support this class. 
     }