Занятия событиями на переменах, фаро - PullRequest
3 голосов
/ 02 ноября 2011

Можно ли прослушивать события, которые классы выдают при изменении? Мне нужно знать, когда что-то (код, переменные и т. Д.) Изменяется в некоторых классах из системного браузера.

Ответы [ 2 ]

5 голосов
/ 30 июня 2013

Обратите внимание, начиная с Pharo 2.0, теперь есть SystemAnnouncer, который генерирует объявления.Больше нет SystemChangeNotifier.

 SystemAnnouncer uniqueInstance 

- это способ получить к нему доступ.Тогда посмотрите в пакете System-Announcements

Вы можете зарегистрироваться с помощью

SystemAnnouncer uniqueInstance on: ClassRenamed do: [ doSomething ]

или

SystemAnnouncer uniqueInstance on: ClassRenamed send: #foo to: anObject

Вы можете отписаться с помощью

SystemAnnouncer uniqueInstanceunsubscribe: anObject
4 голосов
/ 02 ноября 2011

SystemChangeNotifier uniqueInstance - это объект, управляющий событиями изменения системы (к которым относятся изменения кода и переменных). Посмотрите ссылки на SystemChangeNotifier, чтобы найти много примеров пользователей.

Например, чтобы получать уведомления обо всех изменениях (доступны другие способы регистрации, которые регистрируются только для подмножества изменений):

SystemChangeNotifier uniqueInstance
  notify: self ofAllSystemChangesUsing: #systemEvent:

Теперь метод systemEvent: вызывается с экземплярами подклассов AbstractEvent, представляющими все изменения.

Чтобы избавиться от дальнейших уведомлений, выполните:

SystemChangeNotifier uniqueInstance
  noMoreNotificationsFor: self
...