How would you explain the life cycle of a map annotation in MapKit, and how would you optimize rendering for high-density data points?