Предупреждение [MKAnnotation]: '-setTitle:' не найден в протоколе (ах) - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть подкласс с именем MyAnnotation для управления протоколом аннотаций, моя проблема в том, что когда я создаю приложение, оно выдает мне следующее предупреждение:

'-setTitle:' not found in protocol(s)   

компилятор указывает мне на эту строку, которая вызывает предупреждение:

annView.annotation.title = @"You are here";

, где annView является MKPinAnnotationView:

MKPinAnnotationView *annView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentLoc"];

Не могли бы вы помочь мне исправить это предупреждение? спасибо заранее :)

1 Ответ

3 голосов
/ 19 апреля 2011

Свойство annotation MKPinAnnotationView (которое является подклассом MKAnnotationView) имеет тип id<MKAnnotation>, который не определяет метод -setTitle:.

Однако, если ваш класс, реализующий протокол MKAnnotation, определяет для себя метод -setTitle: (например, с помощью объявления @property), , тогда , вы можете установить заголовок следующим образом:

MyAnnotationClass *myAnnot = (MyAnnotationClass *)annView.annotation;
myAnnot.title = @"You are here";

Но вам, вероятно, следует установить заголовок аннотации при его создании и перед вызовом addAnnotation вместо установки в viewForAnnotation.

Кроме того, наименование вашего класса MkAnnotation, вероятно, не очень хорошая идея. Его легко спутать с протоколом MKAnnotation. Вместо этого используйте что-то вроде MalekAnnotation.

...