This line:
[self.mapView removeAnnotation: self.mapView.annotations];
should probably be:
[self.mapView removeAnnotations: self.mapView.annotations];
removeAnnotation:
expects a single annotation. removeAnnotations:
expects an array of annotations.
This will solve both of your issues.
FYI - never ignore compiler warnings. If your code isn't compiling clean it will likely crash.