在我的构造函数中,我想创建一个随机颜色。

因此,我需要三个0到1范围内的随机7位浮点数,它们组成了颜色的红色,绿色和蓝色分量。我没有写很长的random() % 128 / 128.0三遍,而是将它放在了一个块中:

CGFloat (^randFloat)() = ^(){ return random() % 128 / 128.0; };
color = CGColorCreateGenericRGB(randFloat(), randFloat(), randFloat(), .5);


那是使用积木的有效方法吗?
如果没有,您将使用什么呢?

最佳答案

您要返回randFloat吗? randFloat是否会使用与附近功能不可分离的任何状态(即randFloat是否为闭包)?如果不是这样,它会更便于移植(例如,iPhone官方SDK还不支持块),并且可以在函数外部创建静态函数,效率很高:

static CGFloat randFloat() {
    return random() % 128 / 128.0;
}
...
color = CGColorCreateGenericRGB(randFloat(), randFloat(), randFloat(), .5);

关于objective-c - 这是Obj-C中块的有效用法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2419202/

10-11 00:32