Проблема с выбранными аннотациями

:) У меня действительно странная проблема при попытке получить свойства выбранной аннотации. Вот краткое описание моей проблемы:

Я передаю первый объект из выбранного массива аннотаций в новый массив, так как он мне нужен только один (в соответствии с Apple doc, передача массива selectedAnnotations в новый массив выбирает только первый объект. Но я пытался вытянуть объект непосредственно из массива selectedAnnotations с индексным путем 0, и это та же проблема).

Затем я преобразую объект в объект пользовательской аннотации (поскольку это должен быть объект).

После этого я пытаюсь получить доступ к свойствам моего временного объекта аннотации. Вот когда все вырвалось на свободу. NSLog объекта показывает только адрес памяти. Свойство Text имеет значение null. Поэтому я не могу получить к нему доступ.

Я был бы признателен за любую помощь в том, что я делаю неправильно или какой подход я должен использовать. Спасибо, любезно!

Вот код:

-(void) mapView:(MKMapView *)aMapView didSelectAnnotationView:(MKAnnotationView *)view
{

    if ([view isUserInteractionEnabled])
       // NSLog(@"Tapped!!!");

    {

     NSArray* selectedAnnotation=mapView.selectedAnnotations;
     CustomAnnotations *selectedAnn=[selectedAnnotation objectAtIndex:0];


       NSLog(@"selected annotation text is %@", selectedAnn.text);

Мой пользовательский класс аннотаций имеет координату и текстовое свойство, и он размещается на карте с помощью этого кода:

    CustomAnnotations* commentAnnotation = [[[CustomAnnotations alloc] initWithLocation:mapView.userLocation.location.coordinate andTitle:@"comment" andText:text]autorelease];


[mapView addAnnotation:commentAnnotation];

Кроме того, представление для аннотации имеет следующую кодировку:

-(MKAnnotationView *) mapView:(MKMapView *) aMapView viewForAnnotation:(id<MKAnnotation>)annotation
{


    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;

    MKAnnotationView *customAnnotation = (MKAnnotationView*)[mapView dequeueReusableAnnotationViewWithIdentifier:@"pin"];

    if(!customAnnotation)
    {
    customAnnotation = [[[MKAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]autorelease];
    }
    customAnnotation.centerOffset=CGPointMake(10, -30);


    if ([annotation title]==@"comment")  
    {
        customAnnotation.userInteractionEnabled=YES;

        customAnnotation.image=[UIImage imageNamed:@"NewCommentsPin.png"];
    }

    return customAnnotation;

}

Любая помощь приветствуется!

Я выяснил проблему: мой пользовательский класс аннотаций выпускал текст в dealloc. Мне еще предстоит пройти долгий путь, пока я не пойму, когда выпускать, а когда нет, но только по одному шагу за раз!:)

1 ответ

Решение

Вот твой release шпаргалка.

Когда вы создаете объект, и у него есть любое из слов new, alloc, copy или же retain в конструкторе он принадлежит вам, и вы должны освободить его, если вам больше не нужна ссылка.

Другие вопросы по тегам