На Mac вы можете использовать objc_setAssociatedObject, но его нет на iPhone.
Так что в основном вам нужен какой-то управляющий синглтон, который хранит эти ссылки для вас, который вы передаете в NSObject, и он делает то, что вы хотите.
Когда я делал что-то подобное, я написал одноэлементный класс, который принимал запросы на выполнение действия, и запустил таймер, который срабатывал, когда действие должно было быть выполнено - в то время мой класс менеджера решил, был ли данный запрос по-прежнему в силе, и если так выстрелил действие. Таким образом, я мог эффективно отменить таймер и, кроме того, мог сказать менеджеру сбросить таймер, который на самом деле не был, он просто создал новый таймер, но когда старый таймер сработал, действие, которое ему было запрошено, было недействительным.
Таким образом, в основном таймер перезванивал синглтон только с помощью идентификатора запроса, что привело к записи в словаре, содержащей подробности вызова.