2011-10-15 111 views
0

我看到蘋果的樣本之一這條線......iPhone - &符號,&符號是什麼?

if (&ADBannerContentSizeIdentifierPortrait != nil) 

究竟是什麼這個符號做呢?

感謝

+0

什麼樣的對象'ADBannerContentSizeIdentifierPortrait'是? –

+0

很好的問題。它是iAd Framework的一個變量。 – SpaceDog

回答

6

在C和語言的符號認爲 「派生」 從它(如C++和Objective-C)返回一個變量(而不是內容)的地址

在這種情況下,發生了什麼事情是這樣的:變量ADBannerContentSizeIdentifierPortrait是一個弱連接變量。這意味着,在運行時它可能會丟失(在較舊的操作系統版本中就是這種情況)。現在,如果變量確實存在,「&」符號將返回一個地址。如果操作系統還沒有此變量,則&符號返回nil

簡而言之:該表達式檢查操作系統是否已經提供變量ADBannerContentSizeIdentifierPortrait。根據the documentation這個變量存在自iOS 4.2以來,所以if表達式的主體只在iOS> = 4.2上執行。

+0

發佈後,我開始懷疑這樣的事情會是原因,但你的回答比我想象的要多。謝謝。 – SpaceDog

2

&符表示對數據的引用。 ADBannerContentSizeIdentifierPortrait是一個簡單的枚舉值,因此不能爲零,但它的引用可以是。如果您需要更全面的答案,請添加更多代碼。

+0

'ADBannerContentSizeIdentifierPortrait'不是「枚舉值」,它是一個NSString常量。 – DarkDust

+0

正確,我的錯誤 - 儘管主要想法仍然有效。 – Stavash