2011-10-15 77 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