我无法让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个regins它有时不会增加10但只增加8(或7,9或0)。它不是第8个被添加的。
如果我有
NSLog(@"region count %i",[[locationManager monitoredRegions] count]);
在厕所之后它总是产生错误
ERROR,Time,309834541.397,Function,“Boolean CLClientCopyMonitoredRegions(__ CLClient *,const __CFDictionary **)”,无法成功发送
有关如何成功使用startMonitoringForRegion的任何建议吗?
编辑:在startMonitoringForRegion:和[[locationManager monitoredRegions] count]周围添加@try catch,产生错误。他们的错误仍然产生但没有被抓住。也将它全部移动到NSTimer循环,每秒触发它可以重复调用导致问题。仍然随机失败。 有时我的第一次通话失败。
干杯
答案 0 :(得分:4)
在位置感知编程指南
中在指定要监控的区域集时,您应始终谨慎。区域是共享系统资源,系统范围内可用区域的总数是有限的。因此,Core Location限制了单个应用程序可以同时监视的区域数量。
答案 1 :(得分:0)
您使用iPhone4功能仅适用于该设备,请查看
[CLLocationManager regionMonitoringAvailable]
答案 2 :(得分:0)
这似乎是数据库错误或类似的东西。在注册区域之后的一段时间内,桌子被锁定(或者,无论等同于幕后,但是我猜它正是这样)。因此你不能算数。在较长时间后尝试计数。