mapView addAnnotation并不总是有效

时间:2013-10-10 03:20:28

标签: objective-c ios7 mkmapview xcode5

我有一个奇怪的错误,注释并不总是被添加到我的mapview,我添加注释的代码是:

- (void)plotVehicles {

NSMutableArray *currentVehicles = [[MyApplication getInstance] currentVehicles];

for (Vehicle * veh in currentVehicles) {
    VehiclePin * vehiclePin = [[VehiclePin alloc] initWithVehicle:veh];
    [self.mapView addAnnotation:vehiclePin];
    [self.vehiclePins addObject:vehiclePin];
    NSLog(@"current ann %i %@ %@",self.mapView.annotations.count,vehiclePin,self.mapView.annotations);
}
NSLog(@"annotations added %i/%i",self.mapView.annotations.count,self.vehiclePins.count);
}

我正在向mapViewvehiclePins添加注释,并且有2个日志,第一个(在循环内)显示将添加哪些注释以及mapview的当前状态。注释。该日志的结果是:

current ann 1 <VehiclePin: 0x1573c470> (
    "<VehiclePin: 0x1573c470>"
)

current ann 2 <VehiclePin: 0x9e7f490> (
    "<VehiclePin: 0x1573c470>",
    "<VehiclePin: 0x9e7f490>"
)
 current ann 2 <VehiclePin: 0x9e7f430> (
    "<VehiclePin: 0x1573c470>",
    "<VehiclePin: 0x9e7f490>"
)
current ann 3 <VehiclePin: 0x1573f730> (
    "<VehiclePin: 0x1573c470>",
    "<VehiclePin: 0x9e7f490>",
    "<VehiclePin: 0x1573f730>"
)
 current ann 3 <VehiclePin: 0x1573f870> (
    "<VehiclePin: 0x1573c470>",
    "<VehiclePin: 0x9e7f490>",
    "<VehiclePin: 0x1573f730>"
)
...

总共31个注释,但是在该点之后数组永远不会改变(3个元素),并且第二个日志的结果不那么令人惊讶:

annotations added 3/31

我目前正在使用Xcode 5,使用xcode 4.6时没有问题

我错过了什么吗?

编辑:我也检查了CLLocationCoordinate2DIsValid,它们是有效的,不同的坐标。

2 个答案:

答案 0 :(得分:0)

我认为原因是您尝试多次将相同的注释添加到地图和vehiclePins数组中。
对于数组,这没有问题,因为数组可以多次存储同一个对象。但是注释不是这样的:每个注释对象只存储一次。

答案 1 :(得分:0)

现在已经修好了。我做的是卸载应用程序并清理构建,再次编译并开始工作。第二次,XCode 5发生了这种问题。