Страница 2 из 2

Добавлено: 12 фев 2010, 13:43
Screw
Обращайте особо пристальное внимание на то, какого именно типа переменные вы используете, потому как ссылки на объектные интерфейсы и ссылки на vip-интерфейсы инициализируются по-разному.

Код: Выделить всё

var V: SomeVipInterface;
V.SomeMethod; 
В приведенном примере перед вызовом V.SomeMethod переменная V автоматически инициализируется ссылкой на разделяемую копию SomeVipInterface, затем отработает его метод SomeMethod. Явная же инициализация ссылок на vip-интерфейс выполняется с помощью вызовов GetVipInterface или LoadVipInterface - в зависимости от того, какая копия интерфейса требуется - разделяемая или индивидуальная, соответственно.

Объектные переменные инициализируются с помощью вызовов GetVipRef или LoadVipRef (возвращают ссылки на разделяемые или индивидуальные копии интерфейсов-реализаций, соответственно). А можно сделать то же самое по-другому:

Код: Выделить всё

var VS: ISomeInterface(SomeImplementation); // разделяемая копия
var VI: ISomeInterface(SomeImplementation) new; // индивидуальная копия
Это вкратце. Более подробную информацию о прогрессивных методах инициализации переменных-ссылок можно извлечь из документации по VIP (см. статью "Переменные типа ссылки" в разделе "Реализация объектов" документа "Описание языка VIP").