Есть способ удалить все наблюдатели, прослушавшие Sketchup.active_model.shadow_info
?Удалить все наблюдатели на Sketchup.active_model.shadow_info
что-то вроде Sketchup.active_model.shadow_info.remove_all_observers()
Есть способ удалить все наблюдатели, прослушавшие Sketchup.active_model.shadow_info
?Удалить все наблюдатели на Sketchup.active_model.shadow_info
что-то вроде Sketchup.active_model.shadow_info.remove_all_observers()
Боюсь, что нет. Если бы это было возможно, вы могли бы удалить наблюдателей для других расширений и вызвать всевозможные проблемы для этих расширений.
Я предполагаю, что это для удобства при разработке? Где вы несколько раз добавляете несколько наблюдателей?
Образец, который я использую, всегда должен содержать ссылку на экземпляр наблюдателя, который я прикрепляю, а затем имеет функцию обертки, которая пытается удалить ее перед повторным прикреплением.
module Example
def.attach_shadow_observer
model = Sketchup.active_model
model.shadow_info.remove_observer(@shadow_observer) if @shadow_observer
@shadow_observer = MyShadowObserver.new
model.shadow_info.add_observer(@shadow_observer)
end
end
Это очень наивный и простой пример. Возможно, вам будет удобно создавать менеджера, который избавит вас от создания конкретных методов для каждого наблюдателя, которого вы присоединяете.