На самом деле здесь не так много информации, но есть некоторые идеи, которые приходили в голову при чтении вашего поста.
Я вижу три подхода к этому:
1) Словарь массивов блоков, где ключом в словаре является событие, которое запускается, а затем, когда менеджер событий получает событие, он циклически перебирает массив для этого ключа и запускает все блоки
2) Настройте систему KVO , где ваши события - ваши ключи / ценности, а ваши наблюдатели - ваши обработчики
3) настроить систему протокола делегата так, чтобы ваш делегат был вашим обработчиком, а ваш протокол отображал события, которые могут быть запущены
у всех есть свои плюсы и минусы, я склонен к 1 и 3, но надеюсь, что это поможет!