diff --git a/src/compiler/objective_c_generator.cc b/src/compiler/objective_c_generator.cc
index ff092053ad09386f695387a3cdd232b81e96da7d..465491e385f4b8dfd70b968da881f9a76d1eae09 100644
--- a/src/compiler/objective_c_generator.cc
+++ b/src/compiler/objective_c_generator.cc
@@ -75,11 +75,11 @@ void PrintMethodSignature(Printer *printer, const MethodDescriptor *method,
   if (method->server_streaming()) {
     printer->Print(vars,
                    " eventHandler:(void(^)(BOOL done, "
-                   "$response_class$ *response, NSError *error))eventHandler");
+                   "$response_class$ *_Nullable response, NSError *_Nullable error))eventHandler");
   } else {
     printer->Print(vars,
-                   " handler:(void(^)($response_class$ *response, "
-                   "NSError *error))handler");
+                   " handler:(void(^)($response_class$ *_Nullable response, "
+                   "NSError *_Nullable error))handler");
   }
 }
 
diff --git a/src/compiler/objective_c_plugin.cc b/src/compiler/objective_c_plugin.cc
index 17440358bb837edb9eb15b3d6dc5a3540867f299..3ccfd5b037c54d9e5cb78090465b749254cfb51a 100644
--- a/src/compiler/objective_c_plugin.cc
+++ b/src/compiler/objective_c_plugin.cc
@@ -81,8 +81,12 @@ class ObjectiveCGrpcGenerator : public grpc::protobuf::compiler::CodeGenerator {
         declarations += grpc_objective_c_generator::GetHeader(service);
       }
 
+      static const ::grpc::string kNonNullBegin = "\nNS_ASSUME_NONNULL_BEGIN\n\n";
+      static const ::grpc::string kNonNullEnd = "\nNS_ASSUME_NONNULL_END\n";
+
       Write(context, file_name + ".pbrpc.h",
-          imports + '\n' + proto_imports + '\n' + declarations);
+          imports + '\n' + proto_imports + '\n' + kNonNullBegin + 
+          declarations + kNonNullEnd);
     }
 
     {