Ale*_*lav 5 objective-c ios objective-c-literals
既然我们在Objective-C中有编译器支持的NSNumber文字,是否有一种比较NSNumber与已知整数值的首选方法?
旧的方式是
[myNumber integerValue] == 5
现在我们可以做[myNumber isEqualToNumber:@5]甚至[myNumber isEqualToNumber:@(someVariable)].
该isEqualToNumber:方法是否有优势,或者我们应该坚持使用integerValue,除非要比较的值已经是NSNumber?
我可以看到的一个优点是,如果someVariable从NSInteger变为CGFloat,则新方法不需要更改代码.
das*_*ght 10
新的方式实际上是旧的语法
[myNumber isEqualToNumber:[NSNumber numberWithInt:5]]
Run Code Online (Sandbox Code Playgroud)
这需要额外的电话numberWithInt:; 实质上,我们将一个解决方案与单个调度和零分配进行比较,并将解决方案与两个调度进行比较,并可能进行分配/解除分配.
如果你在紧密循环之外进行这种比较,那就无所谓了.但如果你在一个非常紧凑的循环中进行,也许在绘制某些东西时,你可能会看到一个缓慢的下降.这就是为什么我会坚持旧的方法
[myNumber integerValue] == 5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5268 次 |
| 最近记录: |