Возврат CGEvent моего собственного создания в NSEventTap

Документация для CGEventTapCallBack здесь говорится:

CGEventRef событие Входящее событие. Это событие принадлежит вызывающему, и вам не нужно его освобождать.

Что произойдет, если я захочу съесть мероприятие и вернуться NULL? Нужно ли мнеCFRelease это я сам?

Точно так же, если я хочу заменить его событием, которое я создал сам, должен ли я CFRelease входящее событие и CFRetain вновь созданное событие?

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

1 ответ

Решение

Скопировано из документации для CGEventTapCallBack (ссылка в вопросе):

Обсуждение

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

  • Переданное (возможно измененное) событие. Это событие передается обратно в систему событий.

  • Недавно построенное мероприятие. После того, как новое событие было передано обратно в систему событий, новое событие будет выпущено вместе с исходным событием.

  • NULL, если переданное событие должно быть удалено.

Новое событие будет выпущено вместе с исходным событием. Не выпускайте исходное событие и не выпускайте новое событие.

Другие вопросы по тегам