function getResource:IResource;
var
m_Resource:TResource;
begin
m_Resource := TResource.create();
result := m_Resource;//楼主留意这儿,这儿实际是将这个对象赋给一个接口IResource的引用。
//调用返回后,这个引用会立即失去,引用计数会被减1。
//如果不找个中间变量维持引用,对象会被释放掉。
end;
http://community.csdn.net/Expert/topic/3399/3399849.xml?temp=.2651178
你好,我已经不使用引用计数进行生命周期控制了,为什么还要使用了中间变量,保持引用计数.
但是我试了一下的确再通过中间接口变量,过渡一下,转换成实现类变量后,可以调用类变量的方法,否则会保存。
不明其中原因,不使用引用计数控制生命周期,为什么Delphi还会释放变量?
还有一点疑惑:我在调试时,没有通过中间接口变量过渡,看到的类变量内容和范围函数前的类变量的内容不一致。例如:
TResource = class(TMyInfoObject,IResource);
function getResource:IResource;
var
m_Resource:TResource;
begin
m_Resource := TResource.create();
result := m_Resource;
end;
function useResource:Boolean;
m_myResource:TResource;
begin
m_myResource := TResource(getResource());
m_myResource.setSystemId('http://www.csdn.net'); //调用出错。
end;