2015-10-09 12 views
9

Originariamente, ho qualcosa di molto semplice come segue. Una categoria personalizzata di UIAlertAction in modo che io possa creare un'azione corretta semplicemente con [UIAlertAction okay];Manca un identificatore del tipo nullability sull'interfaccia funzionale

@interface UIAlertAction (Custom) 
+ (UIAlertAction *)okay; 
@end 

@implementation UIAlertAction (Custom) 
+ (UIAlertAction *)okay 
{ 
    return [UIAlertAction actionWithTitle:@"Ok" 
            style:UIAlertActionStyleCancel 
            handler:nil]; 
} 
@end 

E più tardi, decido che voglio anche uno con una curva a completa così l'interfaccia diventano questo:

@interface UIAlertAction (Custom) 
+ (UIAlertAction *)okay; 
+ (UIAlertAction *)okayWithHandler:(void (^ __nullable)(UIAlertAction *action))handler; 
@end 

E e mi metto sempre messaggio di avviso sulla linea di pugno:

puntatore manca un tipo nullability specificatore

enter image description here

Penso di capire l'idea di nullable (onestamente, il nome è piuttosto descrittivo). Ma quello che non capisco è il motivo per cui aggiungere una __nullable alla seconda funzione renderà necessario avere uno specificatore nullable per il primo?

risposta

23

Ma quello che non capisco è il motivo per cui aggiungere un __nullable alla seconda funzione renderà necessario avere uno specificatore nullable per il primo?

E 'semplicemente perché non appena si fornisce alcuna informazione nullability in un'intestazione, si sono tenuti a fornire informazioni annullabilità per tutto in quel colpo di testa. O l'intera API non è specificata o l'intera API è specificata, per quanto riguarda il nullability. Il compilatore ti avverte solo che hai lasciato il lavoro a metà.

+0

Grazie mille! Ora capisco perché inizio a ricevere tonnellate di avvertimenti e solo in una delle mie lezioni. Mi è appena capitato di copiare qualche dichiarazione di metodo da un altro progetto, che ha una dichiarazione '__nullable'. Ho appena rimosso quella dichiarazione, tutti gli avvertimenti sono spariti! –

Problemi correlati