改变事件,pharo

时间:2011-11-02 03:41:56

标签: pharo

是否可以监听类在更改时抛出的事件?我需要知道某些类(代码,变量等)在系统浏览器中的某些类中发生了什么变化。

2 个答案:

答案 0 :(得分:5)

从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

答案 1 :(得分:4)

SystemChangeNotifier uniqueInstance是管理系统更改事件的对象(代码和变量所属的对象)。查看对SystemChangeNotifier的引用以查找许多示例用户。

例如,要收到有关所有更改的通知(其他注册方法仅可注册更改子集):

SystemChangeNotifier uniqueInstance
  notify: self ofAllSystemChangesUsing: #systemEvent:

方法systemEvent:从现在开始调用,AbstractEvent的子类实例代表所有更改。

要删除进一步的通知执行:

SystemChangeNotifier uniqueInstance
  noMoreNotificationsFor: self