【发布时间】:2021-02-28 07:16:59
【问题描述】:
数组排序时,[arr sortUsingComparator:sortByTime] 然后我想取消操作。我该怎么办?
【问题讨论】:
标签: objective-c nsarray
数组排序时,[arr sortUsingComparator:sortByTime] 然后我想取消操作。我该怎么办?
【问题讨论】:
标签: objective-c nsarray
我认为这不是一件容易的事。大概您正在并发环境中工作。然后这样的事情应该会导致排序快速退出。 sortCancelBOOL 设置的时候也需要同步访问权限,如下图获取时一样。
__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;
}];
我没有对此进行测试,但这应该会破坏排序或使其快速完成。
我想知道你为什么要中止排序?
【讨论】:
NSOrderedSet 作为“数据类型”。