考虑下面的方法 – (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler; 使用新的nonnull和nullable 注释关键字,我们可以如下丰富它: – (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler; 但是我们也得到这个警告: 指针缺less可空性types说明符(__nonnull或__nullable) 它是指第三个参数(方块一)。 该文档没有包含示例如何指定块参数的可空性。 它逐字叙述 只要types是一个简单的对象或块指针,就可以在打开的括号之后立即使用非下划线的forms为空或非空。 我试图把这两个关键字中的一个(在任何位置)没有任何运气。 还尝试了下划线前缀变体( __nonnull和__nullable )。 因此我的问题是:如何指定块参数的可空性语义?