2016-06-21 14 views
6

Ich folge einem Online-Tutorial von Team Tree House und einer der Schritte ist es, eine NSManagedObject-Unterklasse für mein Datenmodell zu erstellen.NS_ASSUME_NONNULL_BEGIN Makro

Als ich das tat, dass der Code automatisch eine Klasse und eine Reihe von Makros zu Beginn und und das Ende erzeugt:

NS_ASSUME_NONNULL_BEGIN

NS_ASSUME_NONNULL_END

Ich war auf der Suche online, aber ich Ich konnte keine Dokumentation darüber finden, was diese Leute hier machen. By the way wurden sie in der Kopfzeile definiert NSObjCRuntime.h

Irgendwelche Ideen welchen Zweck dienen sie?

+1

wie ich sagte nicht viel Dokumentation https://developer.apple.com/reference/foundation/ns_assume_nonnull_begin Ich sehe eine Menge von Fragen ist und wie um sie zu beheben, aber nicht, wofür. –

+0

Siehe [Zulässigkeit und Optionen] (https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithObjective-CAPIs.html#//apple_ref/doc/uid/TP40014216-CH4-ID45) im Leitfaden "Using Swift with Cocoa" und "Objective-C_". – Rob

+2

"Nicht viel Dokumentation" ist bedauerlich, aber es ist der * zweite * Hit. Versuchen Sie die erste: [Nullability und Objective-C - Swift Blog - Apple-Entwickler] (https://developer.apple.com/swift/blog/?id=25) – rickster

Antwort

16

Es ist ein Komfort-Makro, Sie zu speichern nonnull in Ihren Kopfzeilen speichern. Vom Swift Blog beschreiben, wie neue Sicherheitsmerkmale haben in zurück Objective-C eingebaut worden:

Zur Annahme der neuen Anmerkungen zu erleichtern, können Sie bestimmte Regionen Ihre Objective-C-Header-Dateien markieren, wie auf Nullbarkeit geprüft. Innerhalb dieser Regionen wird jeder einfache Zeigertyp als nichtnull angenommen.

See NULL-Zulässigkeit und Objective-C - https://developer.apple.com/swift/blog/?id=25