gpt4 book ai didi

iphone - KVC 与快速枚举

转载 作者:技术小花猫 更新时间:2023-10-29 10:23:36 24 4
gpt4 key购买 nike

以下哪个更快,为什么?

CGFloat sum = 0;
for (UIView *v in self.subviews)
sum += v.frame.size.height;

CGFloat sum = [[self.subviews valueForKeyPath:@"@sum.frame.size.height"] floatValue];

最佳答案

确实,一门语言的优雅(或聪明)很大程度上取决于它避免循环的程度。对于,同时;即使是快速枚举 表达式也是一种拖累。无论您如何粉饰它们,循环都将是一段代码,可以执行一些用自然语言描述起来更简单的事情。

“求出这个数组中所有员工的平均工资”,

double totalSalary = 0.0;
for (Employee *employee in employees) {
totalSalary += [employee.salary doubleValue];
}
double averageSalary = totalSalary / [employees count];

相对于...

幸运的是,Key-Value Coding 为我们提供了一种更简洁——几乎像 Ruby 一样——的方式来做到这一点:

[employees valueForKeyPath:@"@avg.salary"];

KVC 集合运算符允许使用 valueForKeyPath: 中的键路径符号对集合执行操作。

任何时候您在关键路径中看到 @ 时,它都表示一个特定的聚合函数,其结果可以返回或链接,就像任何其他关键路径一样。

快速枚举比 KVC 更快。

希望对你有帮助。

关于iphone - KVC 与快速枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16337362/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com