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

enter image description here:Qual è il motivo dell'avviso "Il puntatore non ha un identificatore del tipo nullability"?

Questa è una definizione di metodo nella mia classe. Sta causando un avvertimento. Qual è la causa di simili avvertimenti e come possono essere risolti?

Sto restituendo un oggetto UIColor, mentre quella domanda si riferisce ai blocchi, che viene fornita nei commenti.

Quindi, è utile.

+2

Non pubblicare screenshot al microscopio. Codice postale! Copia e incolla è abbastanza facile. – vadian

+0

@vadian Entrambe le domande sono completamente diverse. Queste domande si riferiscono a Qual è la ragione, non è una soluzione, o qualsiasi cosa menzionata nel tuo link. Qui è un metodo, mentre quello è un blocco separato completo. –

+0

ad es.'+ (UIColor * _Nullable) getColorWithHexa (NSString * _Nonnull) hexString;', ma puoi adattare l'intera interfaccia della tua classe tra le direttive 'NS_ASSUME_NONNULL_BEGIN' e' NS_ASSUME_NONNULL_END', che definisce '_Nullull' per ogni oggetto automaticamente. – holex

risposta

13

NS_ASSUME_NONNULL_BEGIN/END:

Annotare qualsiasi puntatore in un file di intestazione Objective-C fa sì che il compilatore aspettarsi annotazioni per l'intero file, portando su un cascata di avvertimenti. Dato che la maggior parte delle annotazioni non sarà nulla, una nuova macro può aiutare a semplificare il processo di annotazione delle classi esistenti . Contrassegna semplicemente l'inizio e la fine di una sezione dell'intestazione con NS_ASSUME_NONNULL_BEGIN e ..._ END, quindi contrassegna le eccezioni.

Quindi, avete semplicemente fatto.

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

Questo è definita

"NSObjCRuntime.h"

definire NS_ASSUME_NONNULL_BEGIN _Pragma ("clang assume_nonnull iniziare")

definire NS_ASSUME_NONNULL_END _Pragma ("clang assume_nonnull end")

Grazie

Happy Coding.

7

avete ottenuto questo avvertimento quando da qualche parte nel file che hai usato sia _Nonnull, _Nullable, _Null_unspecified, __nullable, __nonnull, nullable o nonnull. Potrebbe anche accadere se l'identificatore è stato aggiunto tramite una macro.

Per fissare l'avvertimento:

  • è possibile rimuovere tutte le occorrenze di supporto di valori Null (non raccomandato)
  • si può assumere tutti i parametri ed i valori ritornati sono _Nonnull utilizzando NS_ASSUME_NONNULL_BEGIN e NS_ASSUME_NONNULL_END (consigliato)