为什么我们在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或更早版本的设备上,值为nil
, if
语句为false。
如果您的应用仅支持iOS 9或更高版本,则不需要if
语句。
有关此类检查的详细信息,请阅读iOS文档中的SDK兼容性指南 。