为什么我们在AVCam示例代码中获取AVCaptureSessionInterruptionReasonKey的地址?

我正在阅读关于AVCaptureSession等的示例代码( AVCam )。我注意到以下这一行( 链接到代码 ):

// In iOS 9 and later, the userInfo dictionary contains information // on why the session was interrupted. if ( &AVCaptureSessionInterruptionReasonKey ) { ... } 

代码中的注释是有道理的。 但对我来说没有意义的是为什么我们要获取AVCaptureSessionInterruptionReasonKey的地址。 它定义如下(在AVCaptureSection.h中):

 AVF_EXPORT NSString *const AVCaptureSessionInterruptionReasonKey NS_AVAILABLE_IOS(9_0); 

如果定义了密钥,它的地址将如何nil ? 如果没有定义此键,代码将永远不会被编译,对吧? 有人可以向我解释这个if语句是如何工作的吗?

在iOS 9.0中添加了AVCaptureSessionInterruptionReasonKey 。 仅当您的应用程序还支持iOS 8或更早版本时,才需要此类if语句。

当代码在iOS 9或更高版本的设备上运行时,该值将为非nil, if语句将为true。 在iOS 8或更早版本的设备上,值为nilif语句为false。

如果您的应用仅支持iOS 9或更高版本,则不需要if语句。

有关此类检查的详细信息,请阅读iOS文档中的SDK兼容性指南 。