Соответствует протоколу MKAnnotation через пользовательский протокол

Я хочу легко получить 2 или более различных типов объектов на карте. Swift 2.0, я хотел использовать протоколы.

Я создал протокол, которому эти объекты тоже должны соответствовать. Я предполагаю, что теперь любой элемент соответствует PinProtocol, по сути, такой же, как MKAnnotation ... просто больше!

protocol PinProtocol: MKAnnotation {
    // stuff
}

У меня есть 2 класса, персонал и клиенты

Оба соответствуют PinProtocol (который также должен соответствовать MKAnnotation)

Я знаю, что это работает так, как будто я настроил свой класс как таковой,

class Client: NSObject, PinProtocol {
     //var coordinate:CLLocationCoordinate2D // Leave out get doesn't conform to protocol warning as expected
}

Итак, это говорит мне о том, что PinProtocol работает должным образом, так как элементы, которые должны придерживаться PinProtocol, также соответствуют протоколу MKAnnotation. Потому что координата: CLLocationCoordinate2D, требуется MKAnnotation.

Так почему я получаю эту проблему с

let staffAndClients = [PinProtocol]()

mapView.addAnnotations(staffAndClients) // not allowed!
//mapView.addAnnotations(pins as! [MKAnnotation]) // also not allowed

Ошибка: невозможно преобразовать значение типа [PinProtocol] в ожидаемый аргумент [MKAnnotation]

Разве PinProtocol не соответствует MKAnnotation, поэтому должен работать.

Но это прекрасно работает

let staff = [Staff]()
mapView.addAnnotations(staff) // no problem
let clients = [Client]()
mapView.addAnnotations(clients) // no problem

Я могу обойти проблему, используя AnyObject, но почему я не могу использовать PinProtocol - который мне кажется более чистым и сама идея расширений протокола.

Спасибо за любую помощь.

Addit ...

То, как я обхожу это для тех, кто сталкивается с подобной проблемой,

var pins = [AnyObject]()
mapView.addAnnotations(pins as! [MKAnnotation])

Ответы на вопрос(2)

Ваш ответ на вопрос