con Xcode 6.3 ho notato alcuni attributi di proprietà, vale a dire:Che cosa fanno gli attributi di proprietà relativi a null in XCode?
nonnull
null_resettable
nullable
Qualcuno potrebbe spiegare quello che fanno quando applicato?
con Xcode 6.3 ho notato alcuni attributi di proprietà, vale a dire:Che cosa fanno gli attributi di proprietà relativi a null in XCode?
nonnull
null_resettable
nullable
Qualcuno potrebbe spiegare quello che fanno quando applicato?
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!
Quindi fondamentalmente; questi attributi sono usati solo nel contesto con Swift giusto? –
Principalmente sì, ma riceverai avvisi del compilatore se provi ad assegnare null alla proprietà contrassegnata come non nulla anche in Objective-C. – Greg