Переопределение NSObject и добавление переменной класса - PullRequest
1 голос
/ 07 февраля 2010

Я использую следующий код для выполнения селектора после задержки с несколькими переданными параметрами:

http://nifty -box.com / блог / 2006/12 / nsinvocation-чистит-code.html

Это работает очень хорошо, но мне нужно расширить это для поддержки эквивалента:

[NSObject cancelPreviousPerformRequestsWithTarget: self]

(цель в этом случае не будет self, но, я думаю, будет экземпляром _UFLatePerformer)

Есть ли способ сделать это, чтобы освобождение моего представления могло убить все оставшиеся запросы с задержкой производительности?

1 Ответ

2 голосов
/ 07 февраля 2010

На Mac вы можете использовать objc_setAssociatedObject, но его нет на iPhone.

Так что в основном вам нужен какой-то управляющий синглтон, который хранит эти ссылки для вас, который вы передаете в NSObject, и он делает то, что вы хотите.

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

Таким образом, в основном таймер перезванивал синглтон только с помощью идентификатора запроса, что привело к записи в словаре, содержащей подробности вызова.

...