2015-04-09 5 views

risposta

11

Apple ha aggiunto due nuove annotazioni di tipo: __nullable e __null. __nullable pointer può avere un valore NULL o nil, mentre uno __nonnull non dovrebbe avere.

Come dovresti sapere in swift puoi usare optionals (?) Ma in Objective-C non puoi. Quegli attributi consentono di creare codice Objective-C che è più comprensibile da rapida e compilatore di avvertimento quando si rompe la regola, ad esempio:

@property (copy, nullable) NSString *name; 
@property (copy, nonnull) NSArray *allItems; 

Questo sarà 'tradotto' in rapida per:

var name: String? 
var allItems: [AnyObject]! 

Questo è preso da NSHipster:

non nullo: indica che il puntatore dovrebbe/non sarà mai pari a zero. I puntatori annotati con non null vengono importati in Swift come valore di base non opzionale (ad esempio NSData).

nullable: indica che il puntatore può essere nullo nella pratica generale. Importato in Swift come valore opzionale (NSURL?).

null_unspecified: Continua la funzionalità corrente di importazione in Swift come optional implicitamente da scartare, in posizione ideale per essere utilizzato solo durante questo processo di annotazione.

null_resettable: Indica che mentre una proprietà avrà sempre un valore, può essere azzerata assegnando nil. Le proprietà con un valore predefinito non zero possono essere annotate in questo modo , come tintColor. Importato in Swift come opzionale (relativamente sicuro) non confezionato. Documentare di conseguenza!

+0

Quindi fondamentalmente; questi attributi sono usati solo nel contesto con Swift giusto? –

+2

Principalmente sì, ma riceverai avvisi del compilatore se provi ad assegnare null alla proprietà contrassegnata come non nulla anche in Objective-C. – Greg

Problemi correlati