1

使用 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 图像吗?

4

2 回答 2

0

通过在 Playground 中执行此操作,我能够恢复正常:

UIVidya layout: sdfgh

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

编辑:

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

于 2018-08-04T10:52:27.287 回答
0

看起来您的图像没有损坏。第二条错误消息表明您有一个预期SpecLayouta class(大概) 的实例。SpecLayout尝试定义方法

instVarNames
  ^self class instVarNames

visibleSlots
  ^self class visibleSlots

在实例方面,SpecLayout看看您是否可以继续前进并找到损坏的对象。您可以随时返回这里获取更多信息。修复问题后,不要忘记删除新的虚假方法。

于 2018-08-04T10:21:14.663 回答