В следующем коде я создаю категорию на UIColor для создания случайного цвета. Однако из этого кода я бы подумал, что условное «если» будет истинно при каждом запуске метода, а не только в первый раз.
Мне кажется, я не совсем правильно понимаю статические переменные. Статическая переменная устанавливается только один раз, а затем при втором запуске метода эта строка просто игнорируется? (так будет посеянный всегда будет ДА после первого запуска)?
@interface UIColor(Random)
+(UIColor *)randomColor
{
static BOOL seeded = NO;
if (!seeded)
{
seeded = YES;
srandom(time(NULL));
}
CGFloat red = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat green = (CGFloat)random()/(CGFloat)RAND_MAX;
CGFloat blue = (CGFloat)random()/(CGFloat)RAND_MAX;
return [UIColor colorWithRed:red green:green blue:blue alpha:1.0f];
}