いくつかのMKAnnotationを使用してマップを設定しています。それらをマップに追加すると、次のメッセージが表示されます。
クラスENTAnottationのインスタンス0xbe62850は、キー値オブザーバーがまだ登録されている間に割り当てが解除されました。観測情報が漏洩し、他の物体に誤って付着する可能性もあります。NSKVODeallocateBreakにブレークポイントを設定して、デバッガーでここで停止します。現在の観測情報は次のとおりです:(コンテキスト:0x0、プロパティ:0xbe66b30>
私が間違っていない場合、それは、オブザーバーがまだ生きている間にオブジェクトの割り当てが解除されたことを意味します。オブザーバーが誰であるかをどうやって知ることができますか?そして、私がそれらを見つけたとしても... ARCで明示的な割り当て解除は禁止されていませんか?それが本当なら、私はそれらの割り当てを解除することができませんでした...だから...私は何ができますか?
ありがとうございました。
- - - -編集 - - -
リクエストに応じて、コードを投稿します。アノテーションを設定するために必要な値を含むJSONを返すWebを呼び出します。
- (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]];
}
}
その後、問題なくコードを実行しても、アプリがクラッシュします。