Переопределение NSObject и добавление переменной класса

StackOverflow https://stackoverflow.com/questions/2215903

  •  19-09-2019
  •  | 
  •  

Вопрос

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

http://nifty-box.com/blog/2006/12/nsinvocation-cleans-code.html

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

[NSObject отменяет предварительные запросы выполнения с целью:self]

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

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

Это было полезно?

Решение

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top