ага, с objc нужна совместимость. мутабельности нет
Если свифт объект вызывается из обжектива он должен быть с аннотацией @objc и наследоваться от NSObject, если есть вариант пробрасывать по протоколу — определяется обычный протокол и ему конформится уже свифтовый класс, а передаётся по протоколу.
Ну и если хочется опционально методы поддерживать, то все равно NSObject и протокол должен поддерживать NSObjectProtocol, иначе не виден respondsToSelector