0

我有两套使用获得的一套

NSMutableSet *monitoredRegionSet = [[locationManager monitoredRegions]mutableCopy];

另一个是使用

NSMutableSet *regionSet = [NSMutableSet setWithCapacity:regionChunks.count];
CLRegion *region = [[CLRegion alloc] initCircularRegionWithCenter:coordinate radius:radius        
identifier:regionString];
[regionSet addObject:region];

当我尝试在它们之间设置操作时,它不起作用。我是否应该实现一个 CLRegion 类别并实现 isEqual: 和 hash: 方法。是否有更好的方法来做到这一点。

[monitoredRegionSet intersectSet:regionSet];
[monitoredRegionSet minusSet:regionSet];
4

1 回答 1

0
CLRegion *region = 
    [[CLRegion alloc] initCircularRegionWithCenter:coordinate 
        radius:radius        
    identifier:regionString];

那是一个全新的、不同的区域对象。在没有任何内置的区域相等概念的情况下,可以保证包含此区域对象的集合与先前存在的区域对象集合之间没有交集。

正如您正确暗示的那样,您可以使用 CLRegionisEqual:hash. 但这真的是你想做的事吗?一个更好的问题可能是:您实际上想在这里完成什么?例如,直接从第一组绘制第二组的区域可能更合适、更简单。

编辑:您最简单的方法可能是这样的:

https://stackoverflow.com/a/7197192/341994

只需停止监视所有区域并从一组新区域重新开始(当然,其中一些区域可能恰好与您已经监视的区域相同)。

于 2013-05-12T17:34:24.130 回答