Se você possui um NSMutableArray
, como embaralha os elementos aleatoriamente?
(Eu tenho minha própria resposta para isso, que está publicada abaixo, mas eu sou novo no Cocoa e estou interessado em saber se existe uma maneira melhor.)
Atualização: conforme observado pelo @Mukesh, no iOS 10+ e no macOS 10.12+, existe um -[NSMutableArray shuffledArray]
método que pode ser usado para embaralhar. Consulte https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc para obter detalhes. (Mas observe que isso cria uma nova matriz, em vez de embaralhar os elementos no lugar.)
for (NSUInteger i = self.count; i > 1; i--) [self exchangeObjectAtIndex:i - 1 withObjectAtIndex:arc4random_uniform((u_int32_t)i)];
API
é que ele retorna um novo Array
endereço para um novo local na memória.