preferredPolarPattern和selectedPolarPattern有什么区别?我已经通读了这里和这里的文件。也许我太笨了,但我看不出这两者有什么区别。什么好主意吗?
From the docs:
/// Describes the currently selected polar pattern. Will be nil for data sources that have no
/// selectable patterns.
@property (readonly, nullable) AVAudioSessionPolarPattern selectedPolarPattern API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos, macos);
/// Describes the preferred polar pattern. Will be nil for data sources that have no selectable
/// patterns or if no preference has been set.
@property (readonly, nullable) AVAudioSessionPolarPattern preferredPolarPattern API_AVAILABLE(ios(7.0), tvos(9.0)) API_UNAVAILABLE(watchos, macos);
这是一个关于阅读苹果文档的过程的问题,而不是一个纯粹的编程问题。
首先,我们应该考虑AVAudioSessionDataSourceDescription
对象,特别是在配置麦克风方向性小节中。
阅读属性和方法是很重要的,因为有时重要的信息不会在所有相关的文章中重复。如果对象、属性或方法的函数不清楚,那么还记得查看(参见also also一节)。
在这个例子中,我们有两个属性,乍一看似乎反映了相同的信息。
selectedPolarPattern
:数据源的活动极型。preferredPolarPattern
:数据源的首选方向性配置。
这两个属性都处理麦克风的极性模式。这里区分它们的关键字是active和preferred。即使这样,也不能填补所有的空白,特别是当这两个属性持有不同的值时。
这时我们应该阅读文档以获得更多线索。还有其他与这些相关的属性或方法吗?有supportedPolarPatterns
,但那只是设备支持的一组极性模式。对于preferredPolarPattern
,setPreferredPolarPattern
,是一个setter方法。没有setSelectedPolarPattern
或setPolarPattern
方法。奇怪的!。这应该是一个关于方法行为的标志。
请记住,使用Apple的api,您不一定能够控制某些操作何时发生。
这在setPreferredPolarPattern
的讨论中得到了证实,我们读到:
调用此方法请求更改所选的极模式。要确定更改是否生效,请检查selectedPolarPattern属性。
这确认preferredPolarPattern
何时与selectedPolarPattern
不同
还要注意:
如果数据源及其所属端口正在使用中,使用此方法更改指向性配置可能会导致路由重新配置。
只有在设置音频会话的类别和模式并激活会话后才能设置首选极模式。