|
Тема |
Re: Интерфейси като парамтери на функции [re: SDR] |
|
Автор | Ивaнчo (Нерегистриран) | |
Публикувано | 14.03.07 21:47 |
|
|
Как така се прави копие?!?
Когато параметъра е интерфейс, и не е зададен да бъде константа, единственото нещо което Делфи прави е да се увеличи RefCount-а на интерфейса с 1 когато "влиза" във функцията и на изхода съответно да намали този RefCount. Когато е зададен като константа, Делфи, не увеличава RefCount-а при вход, и не го намалява при изход от функцията. Това си има и недостатъци, защото ако работи програмата многонишково, и в същия момент друга функция, процес, каквото и да е там, освободи интерфейса, чиито RefCount е 1, твоето "копие" което използваш ще бъде невалидно, тъй като той ще бъде унищожен.
Най-лесно ще ти е да си създадеш един интерфейсен обект, и сам да видиш как се държи RefCount -а му, когато се подава като константа и не...
|
| |
|
|
|