Verwendung von Objective-C-Schlüsselwörtern mit und ohne Nullwert in der blockbasierten API-Methode

Betrachten Sie die folgende Methode

- (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;

Mit der neuen nonnull und nullable Anmerkung keywords wir bereichern können es wie folgt:

- (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;

aber wir bekommen auch diese Warnung:

Zeiger fehlt, ist ein null-Zulässigkeit Typ Bezeichner (__- null-oder
__nullable)

Er bezieht sich auf den Dritten parameter (der block).

Den Dokumentation nicht gerade mit Beispielen, wie Sie angeben, die null-Zulässigkeit der block-Parameter. Darin heißt es wörtlich

Können Sie die nicht-Unterstrichen Formen nullable-und nicht-null-sofort
nach einer öffnenden Klammer, solange der Typ ist ein einfaches Objekt, oder
block-pointer.

Habe ich versucht, indem eines der beiden Schlüsselwörter für den block (in jeder position), ohne Glück. Habe auch versucht den Unterstrich als Präfix-Varianten (__nonnull und __nullable).

Daher meine Frage: wie kann ich angeben, die null-Zulässigkeit für semantische block Parameter?

InformationsquelleAutor der Frage albertodebortoli | 2015-04-15

Schreibe einen Kommentar