2016-02-24 4 views
7
+ (UIColor*) getColorWithHexa(NSString*)hexString; 

enter image description here:Что является причиной предупреждения «Указатель не указал спецификатор типа nullability»?

Это определение метода в моем классе. Это вызывает предупреждение. Что является причиной подобных предупреждений и как они могут быть решены?

Я возвращаю объект UIColor, в то время как этот вопрос относится к блокам, которые даются в комментариях.

Итак, это полезно.

+2

Не размещайте микроскопические снимки экрана. Почтовый код! Скопировать и вставить довольно просто. – vadian

+0

@vadian Оба вопроса совершенно разные. Эти вопросы касаются того, что является причиной, ее не решением или чем-либо, упоминаемым в вашей ссылке. Вот его метод, а это полный отдельный блок. –

+0

, например.'+ (UIColor * _Nullable) getColorWithHexa (NSString * _Nonnull) hexString;', но вы можете поместить весь интерфейс своего класса между директивами 'NS_ASSUME_NONNULL_BEGIN' и' NS_ASSUME_NONNULL_END', который автоматически определяет '_Nonnull' для каждого объекта. – holex

ответ

13

NS_ASSUME_NONNULL_BEGIN/END:

Комментирование любого указателя в файле заголовок Objective-C вызывает компилятор ожидать аннотации для всего файла, в результате чего на каскада предупреждений. Учитывая, что большинство аннотаций будет ненужным, новый макрос может упростить процесс аннотирования существующих классов . Просто отметьте начало и конец раздела вашего заголовка с NS_ASSUME_NONNULL_BEGIN и ..._ END, затем отметьте исключения.

Итак, вы просто сделали.

NS_ASSUME_NONNULL_BEGIN 
+ (UIColor*) getColorWithHexaCode:(NSString*)hexString; 
NS_ASSUME_NONNULL_END 

Это определено в

"NSObjCRuntime.h"

определяют NS_ASSUME_NONNULL_BEGIN _Pragma ("лязг assume_nonnull начать")

определяют NS_ASSUME_NONNULL_END _Pragma ("лязг assume_nonnull конец")

Thanks

Счастливое кодирование.

7

Вы получили это предупреждение, когда где-то в файле, который вы использовали либо _Nonnull, _Nullable, _Null_unspecified, __nullable, __nonnull, nullable или nonnull. Также может произойти, если спецификатор был добавлен через макрос.

Чтобы исправить предупреждение:

  • вы можете удалить все вхождения допустимость пустых (не рекомендуется)
  • можно считать все параметры и возвращаемые значения являются _Nonnull с помощью NS_ASSUME_NONNULL_BEGIN и NS_ASSUME_NONNULL_END (рекомендуется)
Смежные вопросы