ARC ограничение - неявное преобразование 'char' в 'NSString *' запрещено с ARC - PullRequest
0 голосов
/ 07 марта 2012

Я играю с mapkit и настраиваю некоторые аннотации.где-то в моем коде у меня есть: -

#define ANNOTATION_FIRST_TYPE 1

unsigned char annoType = ANNOTATION_FIRST_TYPE

annotationView = (MKPinAnnotationView *) [_mapView dequeueReusableAnnotationViewWithIdentifier:annoType ];

Последняя строка выше выдает ошибку Implicit conversion of 'char' to 'NSString *' is disallowed with ARC, что достаточно справедливо, мне нужно явно изменить annoType на NSString.

Но странная вещь;если для строки (3) вместо этого у меня было следующее: -

annotationView = (MKPinAnnotationView *) [_mapView dequeueReusableAnnotationViewWithIdentifier:**ANNOTATION_FIRST_TYPE**]; 

Компилируется без ошибок?Вопрос в том, какой тип ANNOTATION_FIRST_TYPE?

1 Ответ

1 голос
/ 07 марта 2012

ANNOTATION_FIRST_TYPE - целое число. Целое число может быть неявно преобразовано в указатель в C, но если вы включили предупреждения, компилятор должен был предупредить вас об этом. Я не знаю, почему это не ошибка компилятора, вероятно, просто недосмотр.

Вы должны определить ANNOTATION_FIRST_TYPE как строку NSS, например,

#define ANNOTATION_FIRST_TYPE @"1" 
...