2010-03-10 39 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

沒有什麼與使用塊辦法。我個人不會在這種情況下,因爲爲操作創建一個塊實際上使代碼更長。但原則上看起來很好。如果這個函數從來沒有在其他地方使用,爲什麼給它一個比它需要的範圍更大的範圍?