objective-c - 如何取消 sortUsingComparator
问题描述
当数组排序时, [arr sortUsingComparator:sortByTime] 然后我想取消操作。我应该怎么办?
解决方案
我认为这不容易。大概您正在并发环境中工作。然后这样的事情应该会导致排序快速退出。当您设置它时,您还需要同步对sortCancel
BOOL 的访问,就像您获取它时一样,如下所示。
__block BOOL sortCancel = NO;
NSObject * lock = NSObject.new; // Sync access to sortCancel
NSArray *sortedArray = [array sortedArrayUsingComparator: ^(id obj1, id obj2) {
@synchronized ( lock ) {
// Check for cancel
if ( sortCancel ) {
// Sort has been cancelled
return (NSComparisonResult)NSOrderedSame;
}
}
// 'Normal' compare, e.g.
if ([obj1 integerValue] > [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
if ([obj1 integerValue] < [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
return (NSComparisonResult)NSOrderedSame;
}];
我没有对此进行测试,但这应该会破坏排序或使其快速完成。
我想知道你为什么要中止排序?
推荐阅读
- spring-boot - 具有基本身份验证、cors 和会话的 Kubernetes minikube nginx 入口返回 403
- angular - 使用 NGRX 注册效果
- javascript - Vue.js:如何在方法中使用来自另一个组件的变量
- android - 单元测试协程 runBlockingTest:此作业尚未完成
- python - 从浮点数到整数的 Python 有损转换
- angular - 是否可以在 p 日历中选择秒?
- batch-file - 用于提供有条件的不同响应的批处理文件命令
- mysql - SQLSTATE [HY000]:一般错误:1 无法创建/写入文件'/var/www/html/new_7alaqa/public/dumpfiles/15869372079790_1036teachernote.txt'
- python - 绘制机器学习的校准曲线
- javascript - 带有通知器的 RxJS `repeatWhen` 快速重复