如果你有一个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相关问答推荐

Objective-C:如何向 NSURL 添加查询参数?

ios10:viewDidLoad 框架宽度/高度未正确初始化

iOS ScrollView 需要约束 y 位置或高度

应用程序终止时处理推送通知

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

未找到 RKObjectMapping.h

UIButton 底部阴影

command/usr/bin/codedesign 失败,退出代码 1-代码符号错误

在 UILabel 中垂直对齐文本(注意:使用 AutoLayout)

如何更改图像 tintColor

WKWebView 判断 JavaScript 返回值

在 iOS 8 中使用 NSMutableAttributedString 的字符串的下划线部分不起作用

dyld:找不到符号:try 运行 iOS 应用程序时的 _NSURLAuthenticationMethodClientCertificate

使用自动布局以编程方式更改框架

当单元格全屏时,为什么 UICollectionView 会记录错误?

如何获取 AppIcon 的 UIImage?

升级到 Xcode 5.1 和 iOS 7.1 后,在 segue 过渡期间导航栏上出现暗影

而不是 push segue 如何替换视图控制器(或从导航堆栈中删除)?

带有 NSBlockOperation 和队列的 NSURLSession

使用 UIViewControllerInteractiveTransitioning 委托协议实现自定义 UIViewController 交互式过渡的正确方法