2010-03-10 25 views
2

在我的构造函数中,我想创建一个随机颜色。因此,我需要三个随机的7位浮点数,范围为0 ... 1,它们组成颜色的红色,绿色和蓝色分量。而不是写在相当长的random() % 128/128.0三次,我把在一个块:这是Obj-C中块的有效用法吗?

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

是一个有效的方式来使用块?
如果不是,你会用什么来代替?

回答

5

您打算退货randFloatrandFloat将使用不能从附近功能分离的任何状态(即randFloat闭合)?如果不是,它更便于携带(iPhone的官方SDK不支持块呢,例如),高效的功能之外创建一个静态函数:

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

iPhone OS不支持即装即用的方块,但您仍然可以将它们与PLBlock一起使用。 – Chuck 2010-03-10 17:53:38

+0

@收集:对啊。换了一下。 – kennytm 2010-03-10 17:54:35

+0

不,randFloat不会使用任何外部变量。它只是为了'random()%128/128'的缩写。谢谢! – bastibe 2010-03-10 18:03:25

1

没有什么与使用块办法。我个人不会在这种情况下,因为为操作创建一个块实际上使代码更长。但原则上看起来很好。如果这个函数从来没有在其他地方使用,为什么给它一个比它需要的范围更大的范围?