我设置了一张地图,带有一些 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]];
}
}
在那之后,应用程序崩溃了,尽管它通过我的代码没有任何问题。