这是Obj-C中块的有效用法吗?

bas*_*ibe 2 colors objective-c

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

因此,我需要三个随机的7位浮点数,范围为0 ... 1,构成颜色的红色,绿色和蓝色分量.random() % 128 / 128.0我把它放在一个块中,而不是写了相当长的三次:

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

这是使用块的有效方法吗?
如果没有,你会用什么呢?

ken*_*ytm 5

你要回来randFloat吗?将randFloat使用任何不能与附近函数分离的状态(即randFloat闭包)?如果没有,它更具可移植性(例如,iPhone官方SDK不支持块)并且在函数之外创建静态函数是高效的:

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