Не уверен что правильно вас понял, но ваш стиль изложения просто выкручивает мозги.
Попробую отсюда:
Пример , Клас "А" и класс "B".
В "А" мы создаем экземпляр "B"
Запускаем например в "B" таймер и когда он закончится произошло событие какое-то "timer and",
а класс "А" подписан на это событие через addTarget.
Вопрос как создать это событие "time end"и как указать в классе "B" что он на него подписан(или имеет) и вызвать его там.
Ну это реализовать просто используя делегаты - объект класса А прописывает себя делегатом объекту класса В при его (объекта В) создании. Далее - когда происходит событие "timer end" вызываем нужный метод делегата.
пример:
class AClass {
var b: BClass
func timerFinished() {
print("Ola-la!!!")
}
func startB() {
b = BClass()
b.delegate = self
b.start()
}
}
class BClass {
var delegate: AClass?
func start() {
// как пример
Timer.scheduledTimer(withTimeInterval: 0,
repeats: false,
block: { self.delegate?.timerFinished() })
}
}