Обращайте особо пристальное внимание на то, какого именно типа переменные вы используете, потому как ссылки на объектные интерфейсы и ссылки на vip-интерфейсы инициализируются по-разному.
В приведенном примере перед вызовом V.SomeMethod переменная V автоматически инициализируется ссылкой на разделяемую копию SomeVipInterface, затем отработает его метод SomeMethod. Явная же инициализация ссылок на vip-интерфейс выполняется с помощью вызовов GetVipInterface или LoadVipInterface - в зависимости от того, какая копия интерфейса требуется - разделяемая или индивидуальная, соответственно.
Объектные переменные инициализируются с помощью вызовов GetVipRef или LoadVipRef (возвращают ссылки на разделяемые или индивидуальные копии интерфейсов-реализаций, соответственно). А можно сделать то же самое по-другому:
Код: Выделить всё
var VS: ISomeInterface(SomeImplementation); // разделяемая копия
var VI: ISomeInterface(SomeImplementation) new; // индивидуальная копия
Это вкратце. Более подробную информацию о прогрессивных методах инициализации переменных-ссылок можно извлечь из документации по VIP (см. статью "Переменные типа ссылки" в разделе "Реализация объектов" документа "Описание языка VIP").