2016-01-21 50 views
1

是否可以將函數/計算變量標記爲在OS X上可用且在iOS上不可用(反之亦然)?諸如@available(OSX 10.0, iOS unavailable)之類的東西。@available - 僅在OS X上可用

我瞭解#if OSX聲明,但是,我想實現的東西,蘋果已經爲NSURLThumbnailKey做 - 它標記爲ObjC NS_AVAILABLE_MAC(10_10);,編譯器會抱怨這個符號是不可用的,而不是編譯器不能解決符號。

而且,我發現,在雨燕#if語句是越野車,例如,定義func myFunc(_, arg1:)func myFunc(_, somethingElse:)#if範圍內,將導致一個錯誤說myFunc已定義。這就是爲什麼我試圖避免使用#if

回答

1

你應該能夠做這樣的事情:

@available(OS X 10.10, *) 

要高,​​只會迫使它OS X 10.10,或:

if #available(OS X 10.10, *) 

有上Hacking With Swift提供一些更多的信息。

多種規格:

@available(iOS, unavailable, message="nope") 
@available(OS X 10.10, *) 
func someFunc() 
+0

不幸的是,這一切確實是做出OS X 10.9或更低的符號不可用,但它仍然可以在iOS ... –

+0

這是奇怪的,該文檔似乎表明,它應該只適用於OS X 10.10及更高版本,但我已經添加了另一個例子,這是一個棘手的解決方法。 –

+0

是的,但'*'是「未來平臺」,通常包括所有iOS版本(這是許多Foundation方法標記的方式)。但多規格確實奏效,謝謝!我從來沒有想過兩個'@ available'聲明...... –