2015-08-27 16 views
4

編寫代碼時最簡單的方法是利用Xcode 7編譯時的泛型,但也可以在Xcode 6上編譯?Objective C泛型 - 條件編譯

我猜某種預處理器伎倆可以做的工作,也許是這樣的:

#define XCODE7_ONLY(x) ... 

NSDictionary XCODE7_ONLY(<NSString*, NSString*>)* dictionary; 
+1

我很好奇..你爲什麼要這麼做?很快你將只能使用Xcode 7提交應用程序。 – Tander

+0

我想通過使用Base SDK 10.9進行編譯來測試我的應用程序是否可以在10.9上運行。 –

+0

你可能想考慮一下,如果這會真的改善代碼,那麼在不正確的對象被添加到字典中會出現問題嗎?不是說增加的類型信息是一件壞事。 – zaph

回答

3

可以使用__has_feature(objc_generics)宏來測試對象 - 仿製藥。所以你可能想嘗試:

#if __has_feature(objc_generics) 
#define XCODE7_ONLY(...) __VA_ARGS__ 
#else 
#define XCODE7_ONLY(...) 
#endif