annullabile e non nullo è stato introdotto per rendere Objective C e l'interoperabilità Swift più facile.
L'obiettivo C non fa alcuna differenza tra riferimenti opzionali e non opzionali. Quindi il compilatore Swift non può essere sicuro se un particolare riferimento al codice Objective C sia facoltativo o meno.
annotazione nullable è la stessa di opzionale in Swift. l'annotazione non nulla è la stessa di quella non opzionale in Swift.
La regola generale è un qualsiasi tipo semplice puntatore sarà assunta ad essere non nullo (per maggiori dettagli leggere the official Swift blog)
Vorrei anche dire che questa nuova annotazione sarà anche migliorare la qualità del codice Objective C Punto di vista. Di solito mi chiedo se l'app andrà in crash se passerà come parametro? Ad esempio:
id var;
NSMutableArray *a = [NSMutableArray new];
[a addObject:var];
Il compilatore non dice nulla in questo caso e l'applicazione si bloccherà in fase di esecuzione! Ora con questa nuova annotazione vedrai un avviso in fase di compilazione. So che questo esempio è stupido, ma ci sono alcuni casi che non si sa se è necessario verificare se una proprietà è nulla prima di chiamare un metodo a meno che non si legge la documentazione.
Intendi "mai * intenzionalmente * essere nullo". –
Potrebbe essere nullo, ma la tua app è comunque in DS e al di là della speranza. Mi chiedo se qualcuno ha provato cosa succede quando si assegna nulla a un riferimento a un oggetto Swift. – gnasher729
@ gnasher729 - Sulla base delle domande che vedo qui, le persone lo provano abbastanza spesso. –