As @incanus points out, you can define an interiorPolygons
array. For example:
NSUInteger interiorCount = 5;
CLLocationCoordinate2D interiorCoordinates[interiorCount];
interiorCoordinates[0] = CLLocationCoordinate2DMake(...);
interiorCoordinates[1] = CLLocationCoordinate2DMake(...);
interiorCoordinates[2] = CLLocationCoordinate2DMake(...);
interiorCoordinates[3] = CLLocationCoordinate2DMake(...);
interiorCoordinates[4] = CLLocationCoordinate2DMake(...);
MKPolygon* interiorPolygon = [MKPolygon polygonWithCoordinates:interiorCoordinates
count:interiorCount];
interiorPolygon.title = @"interior polygon";
NSUInteger count = 5;
CLLocationCoordinate2D coordinates[count];
coordinates[0] = CLLocationCoordinate2DMake(...);
coordinates[1] = CLLocationCoordinate2DMake(...);
coordinates[2] = CLLocationCoordinate2DMake(...);
coordinates[3] = CLLocationCoordinate2DMake(...);
coordinates[4] = CLLocationCoordinate2DMake(...);
MKPolygon* polygon = [MKPolygon polygonWithCoordinates:coordinates
count:count
interiorPolygons:@[interiorPolygon]];
polygon.title = @"exterior polygon";
[self.mapView addOverlay:polygon];
That yields:

Credit goes to @incanus!