Он использует конструкцию valueForKeyPath:
для возврата массива всех координат для всех аннотаций.
Если предположить, что self.mapView
является MKMapView
, то у него есть свойство annotations
, которое возвращает массив объектов, соответствующих протоколу MKAnnotation
. Это означает, что каждый объект в этом массиве должен реализовывать свойство coordinate
. Посылая вызов [self.mapView valueForKeyPath:@"annotations.coordinate"]
, он сразу получает массив всех координат без необходимости перебирать каждый отдельный элемент аннотации в массиве.
Без использования конструкции KVC он должен был бы сделать нечто подобное:
NSMutableArray *coordinates = [NSMutableArray array];
for (id<MKAnnotation> annotation in self.mapView.annotations)
[coordinates addObject:annotation.coordinate];
В целом, это упрощает чтение кода.