Сообщение не понято для существующего метода

Итак, это так:

receiver selectors

возвращается

#(#expression #expression: #mondrianLabel #accept: #name)

Но

receiver expression

бросает MessageNotUnderstood,

Любые идеи, как это исправить и почему это может быть вызвано?

1 ответ

Решение

Вы, вероятно, отправляете сообщение expression к классу вместо экземпляра этого класса.

Если результат оценки receiver selectors является #(#expression #expression: #mondrianLabel #accept: #name) затем receiver это скорее всего класс. Сообщение #selectors реализуется на классе Behavior и возвращает селекторы методов экземпляра класса. Другими словами: экземпляры класса (или любого из его подклассов) понимают перечисленные сообщения.

Следовательно, если вы оцениваете receiver expression, тогда вы получите сообщение непонятного исключения, потому что сообщение #expression определяется на экземпляре класса, который является значением вашего receiver переменная.

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