以iOS系统的版本号来举例说明
错误示范:
一、floatValue的问题
[UIDevice currentDevice].systemVersion.floatValue > 10.3
首先,NSString转float类型时,精度会丢失。
其次,如果要和10.3.1比较时,10.3.1不是float类型,无法比较,只能和两段式的版本号比较。
二、compare的问题
[[UIDevice currentDevice].systemVersion compare:@"9.0"] != NSOrderedAscending
上面的代码,在iOS 10之前的机器上是没毛病的。
iOS 10的机器上,上面的代码判断会失效。
原因是compare:
方法会先比较第一位,如果你设备版本号是10.3.1,那么第一位是1,用它和9比较。而不是你想象中的用10和9比较。
正确示范:
使用compare: options:
方法
[[UIDevice currentDevice].systemVersion compare:@"9.0" options:NSNumericSearch] != NSOrderedAscending
options:
设置为NSNumericSearch
就解决了。