0

我设置了一张地图,带有一些 MKAnnotation。当我将它们添加到地图时,我收到以下消息:

ENTAnottation 类的实例 0xbe62850 已被释放,而键值观察者仍向其注册。观察信息被泄露,甚至可能被错误地附加到其他对象上。在 NSKVODeallocateBreak 上设置断点以在调试器中停止。这是当前的观察信息:(上下文:0x0,属性:0xbe66b30>

如果我没记错的话,这意味着一个对象在他们的观察者还活着的时候被释放了。我怎么知道观察者是什么?而且,即使我找到它们...... ARC 是否禁止明确解除分配?如果那是真的,我无法解除分配它们……所以……我该怎么办?

谢谢你。

- - - -编辑 - - -

应要求,我发布我的代码。我调用了一个 web,它返回一个 JSON,其中包含我需要设置注释的值:

- (void)requestFinished:(ASIHTTPRequest *)request
{
responseString = [request responseString];
id jsonObject = [responseString objectFromJSONString];
NSLog(@"From the JSON: %@", responseString);
NSMutableArray *lat = [jsonObject valueForKeyPath:@"latitud"];
NSMutableArray *lon = [jsonObject valueForKeyPath:@"longitud"];
NSMutableArray *azafatas = [jsonObject valueForKeyPath:@"azafata"];
NSMutableArray *usernames = [jsonObject valueForKeyPath:@"username"];
NSMutableArray *mapazafatas=[[NSMutableArray alloc]init];
for(int i=0;i<[lat count]; i++)
{
    ENTAnottation *azafata=[[ENTAnottation alloc]init];
    double latidouble=[[lat objectAtIndex:i]doubleValue];
    double longdouble=[[lon objectAtIndex:i]doubleValue];
    CLLocationDegrees lati=latidouble;
    CLLocationDegrees longi=longdouble;
    CLLocationCoordinate2D coords=CLLocationCoordinate2DMake(lati, longi);
    NSString *nombre=[azafatas objectAtIndex:i];
    NSString *email=[usernames objectAtIndex:i];
    azafata.coordinate=coords;
    azafata.title=nombre;
    azafata.username=email;
    [mapazafatas addObject:azafata];
    //[mapa addAnnotation:azafata];
}
for (int i=0;i<[mapazafatas count];i++)
{
    [mapa addAnnotation:[mapazafatas objectAtIndex:i]];
}
}

在那之后,应用程序崩溃了,尽管它通过我的代码没有任何问题。

4

1 回答 1

0

解决了。显然,如果您传递了一对不可能的坐标,它会向您抛出非常清晰且不可能混淆任何人的错误消息。可怜我...

于 2012-07-03T11:30:18.633 回答