2016-06-21 12 views
6

Seguo un'esercitazione online dalla struttura ad albero del team e uno dei passaggi è la creazione di una sottoclasse NSManagedObject per il mio modello di dati.NS_ASSUME_NONNULL_BEGIN Macro

Quando ho fatto che il codice generato automaticamente una classe e un insieme di macro all'inizio e e la fine:

NS_ASSUME_NONNULL_BEGIN

NS_ASSUME_NONNULL_END

ero alla ricerca online, ma io non è stato possibile trovare alcuna documentazione su ciò che questi ragazzi stanno facendo qui. Dal modo in cui sono stati definiti nell'intestazione NSObjCRuntime.h

Qualche idea a che scopo servono?

+1

come ho detto non un sacco di documentazione https://developer.apple.com/reference/foundation/ns_assume_nonnull_begin Tutto quello che vedo è un sacco di problemi e di come per risolverli ma non per quello. –

+0

Vedere [Nullability e Optionals] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID45) nell'uso di Swift con Cocoa e Objective-C_. – Rob

+2

"Non molta documentazione" è deplorevole, ma è il * secondo * hit. Prova la prima: [Nullability and Objective-C - Swift Blog - Sviluppatore Apple] (https://developer.apple.com/swift/blog/?id=25) – rickster

risposta

16

È una macro di convenienza per risparmiare la digitazione di nonnull nelle intestazioni. Dal Swift blog dettaglio come nuova le caratteristiche di sicurezza sono state incorporate nel Objective-C:

Per facilitare l'adozione delle nuove annotazioni, è possibile contrassegnare alcune regioni dei tuoi file header Objective-C come controllato per il nullability. All'interno di queste regioni, si suppone che qualsiasi tipo di puntatore semplice non sia nulla.

See Nullability e Objective-C - https://developer.apple.com/swift/blog/?id=25