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

enter image description here:Co to jest powód ostrzeżenia "W indeksie brakuje specyfikatora typu nullability"?

Jest to definicja metody w mojej klasie. Powoduje ostrzeżenie. Co jest przyczyną podobnych ostrzeżeń i jak można je rozwiązać?

Zwracam obiekt UIColor, podczas gdy pytanie dotyczy bloków, które podano w komentarzach.

Jest to pomocne.

+2

Nie publikuj zrzutów mikroskopowych. Kod pocztowy! Kopiuj i wklej jest dość łatwe. – vadian

+0

@vadian oba pytania są całkowicie różne. To pytanie dotyczy przyczyny, nie jest rozwiązaniem lub cokolwiek wspomnianego w linku. Tutaj jest metoda, a jest to kompletny oddzielny blok. –

+0

np.'+ (UIColor * _Nullable) getColorWithHexa (NSString * _Nonnull) hexString;', ale możesz także dopasować cały interfejs klasy między dyrektywami 'NS_ASSUME_NONNULL_BEGIN' i' NS_ASSUME_NONNULL_END', które automatycznie definiują '_Nonnull' dla każdego obiektu. – holex

Odpowiedz

13

NS_ASSUME_NONNULL_BEGIN/END:

adnotacji żadnego wskaźnika w pliku nagłówkowym Objective-C powoduje kompilator oczekiwać adnotacje dla całego pliku, przynosząc na kaskady ostrzeżeń. Biorąc pod uwagę, że większość adnotacji nie ma wartości null, nowe makro może pomóc w usprawnieniu procesu przypisywania istniejących klas do klasy . Po prostu zaznacz początek i koniec sekcji nagłówka za pomocą NS_ASSUME_NONNULL_BEGIN i ..._ END, a następnie zaznacz wyjątki.

Po prostu to zrobiliście.

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

jest to zdefiniowane w

"NSObjCRuntime.h"

określić NS_ASSUME_NONNULL_BEGIN _Pragma ("szczęk assume_nonnull rozpocząć")

określić NS_ASSUME_NONNULL_END _Pragma ("szczęk assume_nonnull end")

Dzięki

Happy Coding.

7

Masz to ostrzeżenie, gdy gdzieś w pliku, który używany zarówno _Nonnull, _Nullable, _Null_unspecified, __nullable, __nonnull, nullable lub nonnull. Może się również zdarzyć, jeśli specyfikator został dodany przez makro.

Aby naprawić ostrzeżenie:

  • Można usunąć wszystkie wystąpienia wartości null (nie zalecane)
  • można założyć wszystkie parametry i zwracane wartości są _Nonnull użyciu NS_ASSUME_NONNULL_BEGIN i NS_ASSUME_NONNULL_END (zalecane)