使用ARC时Xcode中的释放错误

时间:2012-07-03 08:16:06

标签: ios mkmapview automatic-ref-counting

我正在设置一个带有一些MKAnnotation的地图。当我将它们添加到地图时,我收到此消息:

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

如果我没有弄错的话,这意味着一个物体在他们的观察者还活着时已被解除分配。我怎么知道观察员呢?而且,即使我发现它们......是不是明确禁止使用ARC进行解除分配?如果那是真的,我就无法解除他们......所以......我该怎么办?

谢谢。

------- ------ EDIT

根据要求,我发布了我的代码。我打电话给一个网站,它返回一个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]];
}
}

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

1 个答案:

答案 0 :(得分:0)

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