ブロックベースのAPIメソッドでnull以外およびnull許容のObjective-Cキーワードを使用する方法
次の方法を検討してください - (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; ただし、次の警告も表示されます。 ポインターにヌル可能型指定子(__nonnullまたは__nullable)がありません 3番目のパラメーター(ブロック1)を参照します。 ドキュメントには、ブロックパラメータのNULL値の許容を指定する方法の例をカバーしていません。それは逐語的に述べています 型が単純なオブジェクトまたはブロックポインターである限り、左かっこの直後に、アンダースコアなしのフォームnull可能およびnullなしを使用できます。 ブロックの2つのキーワードの1つを(任意の位置に)運がなくても入れてみました。また、アンダースコア付きのバリアント(__nonnullおよび__nullable)も試しました。 したがって、私の質問は次のとおりです。どのようにして、ブロックパラメーターのnull可能性セマンティクスを指定できますか