我无法让 startMonitoringForRegion 持续添加区域。
int i =0;
for(Deals *d in deals){
NSLog(@"deal addRegionsInDealsArray %@",d.deal_id);
if (d.latitude != NULL && d.longitude!=NULL &&
![d.latitude isEqualToNumber:[NSNumber numberWithInt:0 ]] &&
![d.longitude isEqualToNumber:[NSNumber numberWithInt:0 ]]) {
CLLocationCoordinate2D dl = CLLocationCoordinate2DMake(
[d.latitude doubleValue],
[d.longitude doubleValue]);
//NSLog(@"Lat addRegionsInDealsArray %@",d.latitude);
CLRegion * clr = [[CLRegion alloc] initCircularRegionWithCenter:dl radius:radius identifier:d.deal_id];
[locationManager startMonitoringForRegion:clr desiredAccuracy:kCLLocationAccuracyHundredMeters];
NSLog(@"Region to add:%@",clr);
[clr release];
i++;
if (i==10) {
break;
}
}
}
我将中断放在 10 之后,因为它添加的值永远不会超过 10,而且会在 560 个区域左右崩溃。即使将其限制为 10 个区域,有时也不会增加 10 个,而只会增加 8 个(或 7、9 或 0)。添加的不是前 8 个。
另外如果我有
NSLog(@"region count %i",[[locationManager monitoredRegions] count]);
就在厕所之后,它总是会产生错误
错误,时间,309834541.397,函数,“Boolean CLClientCopyMonitoredRegions(__CLClient*, const __CFDictionary**)”,无法成功发送
关于如何成功使用 startMonitoringForRegion 有什么建议吗?
编辑:在 startMonitoringForRegion: 和 [[locationManager protectedRegions] count] 周围添加了 @try catch ,这会产生错误。他们的错误仍然产生但没有被捕获。还将其全部移至 NSTimer 循环,该循环每秒触发一次,因为重复调用会导致问题。仍然随机失败。
有时我的第一次通话会失败。
Cheers