В сигнатуре Swift-функции, что означает ! после аргумента? В частности, означает ли это, что аргумент нужно развернуть до того, как он будет передан, или что он распакуется (автоматически) по мере его прохождения. Вот пример:
func annotationButtonTUI(sender: UIButton!) { }
В этом случае функция является мишенью для UIButton, поэтому все, что происходит с !, происходит автоматически.
Моя мысль - это означает, что вы можете ожидать развернутый объект sender, поэтому вам не нужно пытаться распаковать его.