Jeśli masz NSMutableArray
, jak losowo tasujesz elementy?
(Mam na to własną odpowiedź, która jest zamieszczona poniżej, ale jestem nowy w Cocoa i chcę wiedzieć, czy jest lepszy sposób).
Aktualizacja: Jak zauważył @Mukesh, od iOS 10+ i macOS 10.12+ istnieje -[NSMutableArray shuffledArray]
metoda, której można użyć do losowego odtwarzania . Szczegółowe informacje można znaleźć na stronie https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc . (Należy jednak pamiętać, że tworzy to nową tablicę zamiast tasowania elementów w miejscu).
for (NSUInteger i = self.count; i > 1; i--) [self exchangeObjectAtIndex:i - 1 withObjectAtIndex:arc4random_uniform((u_int32_t)i)];
API
polega na tym, że zwraca nowy, Array
który adresuje do nowej lokalizacji w pamięci.