如果你有一个NSMutableArray,你如何随机洗牌元素?

(我有自己的答案,贴在下面,但我是可可新手,我想知道是否有更好的方法.)


更新:正如@Mukesh所指出的,在iOS 10+和macOS 10.12+中,有一个-[NSMutableArray shuffledArray]方法可以用来洗牌.详情见https://developer.apple.com/documentation/foundation/nsarray/1640855-shuffledarray?language=objc.(但请注意,这会创建一个新数组,而不是将元素混洗到位.)

推荐答案

您不需要SWAPOBJECTATINEX方法.exchangeObjectAtIndex:withObjectAtIndex:个已经存在.

Objective-c相关问答推荐

iOS8:退出应用程序后不久出现蓝条正在使用您的位置

Objective C中的简单字符串连接

使用 AVAudioplayer 在后台播放音乐

让 NSRunLoop 等待设置标志的最佳方法?

animateWithDuration:animations: 会阻塞主线程吗?

判断正在使用的应用程序版本

重复符号 _OBJC_METACLASS_$_ClassName

Objective-C (cocoa) 等价于python的endswith/beginswith

判断对象是 NSArray 还是 NSDictionary

如何获得本地化的 Cancel、Done 等?

如何将日期字符串解析为 iOS 中的 NSDate 对象?

更改后退导航栏按钮的字体

无法在 Interface Builder (Xcode 5) 中创建与子视图的出口连接

如何在 iOS 7 启动期间更改状态栏样式

从 iPhone 设备查找当前国家

iOS 7 中的 UITextView 链接检测

UITableView,我如何知道 cellForRowAtIndexPath 期间的哪个部分?

Block 隐式保留'self';明确提及touch以表明这是预期行为

Xcode 如何加载主情节提要?

无法更改 UILabel 文本 colored颜色