Во-первых, как вы обнаружили, быстрая итерация не работает так, как вы думали. mymap.annotations
возвращает один и тот же массив объектов аннотаций, несмотря ни на что - он не знает, какому типу указателя вы назначаете их.
Во-вторых, обычно считается плохой идеей рассчитывать на представление (например, MKMapView) для хранения данных (например, ваших аннотаций). Для вида карты нормально знать о аннотациях - он должен знать о них, чтобы правильно выполнять свою работу. Но я бы не рекомендовал рассчитывать на вид карты, чтобы поддерживать состояние приложения. Вероятно, у вас есть объекты аннотаций, хранящиеся где-то в вашей модели данных - если это так, это было бы лучшим местом для получения списка аннотаций.
В-третьих, вы можете фильтровать массив, используя предикат. См. Этот ответ для получения справки по использованию предиката для фильтрации по имени класса.