是否存在从其对应的darwin版本或xnu版本中获取macOS版本(10.X)的公式(每个版本都没有预定义的表)
例如,在macOS Mojave(10.14)中,我们具有以下内容:
export default class SearchBarItem extends Component {
state = {
showOptions: false,
selectedItem: [],
}
handleSelectItem = (selectedItem) => this.props.handleSelectItem(this.props.selectCategory, selectedItem);
submitSearch = () => this.props.submitSearch();
handleClickCategory = () => {
this.setState({ showOptions: !this.state.showOptions });
}
handleClickItem(option) {
this.setState({
selectedItem: [...this.state.selectedItem, option],
}, () => this.handleSelectItem(this.state.selectedItem));
}
render() {
const options = this.props.options.map((item, index) => (
<div
className={this.state.selectedItem === item ? "searchBarItem__option--active" : "searchBarItem__option"}
key={index}
onClick={() => this.handleClickItem(item)}
>
{item}
</div>
));
const optionBox = (
<div className="searchBarItem__box">
<div
className="searchBarItem__option"
onClick={() => this.handleClickItem('')}
>
不限{this.props.name}
</div>
{options}
<div className="searchBarItem__confirm">
<span>取消</span><span onClick={() => this.submitSearch()} >套用</span>
</div>
</div>
);
return (
<div className="searchBarItem">
<span onClick={() => this.handleClickCategory()} >
{(() => {
switch (this.state.selectedItem.length) {
case 0: return this.props.name;
case 1: return this.state.selectedItem[0];
default: return `${this.state.selectedItem.length} ${this.props.name}`;
}
})()}
</span>
{ this.state.selectedItem.length > 0 ? '' : <Icon icon={ICONS.DROP_DOWN} size={18} /> }
{ this.state.showOptions ? optionBox : '' }
</div>
);
}
}
SearchBarItem.propTypes = {
name: PropTypes.string.isRequired,
selectCategory: PropTypes.string.isRequired,
options: PropTypes.arrayOf(PropTypes.string).isRequired,
handleSelectItem: PropTypes.func.isRequired,
submitSearch: PropTypes.func.isRequired,
};
在macOS high sierra(10.13)中,我们有:
darwin version 18.0.0
xnu version 4903.200.249
因此,我推断达尔文版本的专业编号在每个OS版本中都是唯一的:
10.13.3: xnu-4570.41.2 darwin version 17.4.0
10.13.2: xnu-4570.31.3 darwin version 17.3.0
10.13.1: xnu-4570.20.62 darwin version 17.2.0
10.13: xnu-4570.1.46 darwin version 17.0.0
我的假设正确吗?
答案 0 :(得分:1)
是的,这对于主要版本号是正确的。次版本有时会增加,即使没有进行macOS修订,反之亦然,反之亦然,例如10.13.1,其中达尔文次要版本为安全版本增加1,然后为10.13.1再次增加。
答案 1 :(得分:0)
等式正确。要涵盖所有* OS变体,请使用:
D =达尔文版
MacOS = 10.(D-4) TvOS = iOS =(D-6) WatchOS =(D-13)
并且未成年人通常会对齐,除非如pmdj所述,修复程序会增加。
如果您想要确切的MacOS(或* OS变体)版本,而没有任何变化,那么它唯一真正存在的地方是/System/Library/CoreServices/SystemVersion.plist。 ProductVersion键(在MacOS中,ProductUserVisibleVersion键是在GUI和其他位置报告的键。MacOS版本号在OS中的任何地方都没有实际意义。