Pharo状态损坏,如何保存我的代码?

时间:2018-08-04 08:58:31

标签: pharo pharo-6

使用DynamicComposableModel并在调试器中编辑我的方法后,我的Pharo 6.1映像已达到以下状态:

Instance of SpecLayout did not understand #visibleSlots

Instance of SpecLayout did not understand #instVarNames

。由于这些错误,我无法“归档”我的代码。我什至无法浏览我的课程,该课程实际上称为“ UIVidya”,应该由

定义
ComposableModel subclass: #UIVidya
    instanceVariableNames: 'vidya listE editE tabmgr'
    classVariableNames: ''
    poolDictionaries: ''
    category: 'vkVidya'!

。在损坏的图像中,UIVidya classLayout返回 SpecLayout 。在正常情况下,UIVidya classLayout返回 FixedLayout 。我没有故意进行此更改,甚至都不知道它是如何发生的。我可以在不放弃最后更改的情况下就地修复破碎的Pharo图像吗?

2 个答案:

答案 0 :(得分:0)

您的图像看起来不完整。第二条错误消息表明您有一个SpecLayout实例,其中应有一个class(可能是SpecLayout)。尝试定义方法

instVarNames
  ^self class instVarNames

visibleSlots
  ^self class visibleSlots
SpecLayout的实例侧按

,以查看是否可以继续查找损坏的对象。您可以随时返回此处获取更多信息。解决问题后,请不要忘记删除新的伪造方法。

答案 1 :(得分:0)

通过在Playground中执行此操作,我得以恢复正常状态:

UIVidya layout: sdfgh

(与UIVidya layout: nil相同)。感谢您的关注,真正帮助了我们积极使用系统浏览器 Playground 比较损坏和未损坏的Pharo实例。现在,我可以“归档”我的代码了!

编辑:

问题来自https://benjamin.vanryseghem.com/projects/spec/docs/dynamic/的过时教程,其中包括发送layout:的代码。不要在现代Pharo中这样做!