如何在基于块的API方法中使用非空和可空的Objective-C关键字
考虑以下方法 - (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler; 使用new nonnull和nullable 注解关键字,我们可以按如下方式丰富它: - (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler; 但我们也会收到以下警告: 指针缺少可空性类型说明符(__nonnull或__nullable) 它引用第三个参数(块一)。 该文档没有提供有关如何指定块参数的可空性的示例。它说逐字记录 只要类型是简单的对象或块指针,就可以在圆括号后立即使用非下划线形式的nullable和nonnull。 我尝试将两个关键字之一放在该块上(任何位置),但没有任何运气。还尝试了下划线前缀的变体(__nonnull和__nullable)。 因此,我的问题是:如何为块参数指定可为空的语义?