Como usar palavras-chave Objective-C não nulas e anuláveis no método de API baseado em bloco
Considere o seguinte método
- (void)methodWithArg:(NSString *)arg1 andArg:(NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
Com o novononnull
enullable
palavras-chave de anotação podemos enriquecê-lo da seguinte maneira:
- (void)methodWithArg:(nonnull NSString *)arg1 andArg:(nullable NSString *)arg2 completionHandler:(void (^)(NSArray *results, NSError *error))completionHandler;
mas também recebemos este aviso:
O ponteiro está ausente em um especificador de tipo de nulidade (__nonnull ou __nullable)
Refere-se ao terceiro parâmetro (o bloco um).
odocumentação não cobre exemplos de como especificar a nulidade dos parâmetros do bloco. Ele afirma literalmente
Você pode usar os formulários não sublinhados, anuláveis e não nulos, imediatamente após um parêntese aberto, desde que o tipo seja um objeto simples ou um ponteiro de bloco.
Tentei colocar uma das duas palavras-chave do bloco (em qualquer posição) sem sorte. Também tentei as variantes prefixadas de sublinhado (__nonnull
e__nullable
)
Portanto, minha pergunta é: como posso especificar a semântica de nulidade para parâmetros de bloco?