Oolong - 代码人生,清茶飘香

Oolong Enterprise Data Service Platform
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

RemObjects中对象的生命周期

Posted on 2008-06-06 15:58  Balsam Pear  阅读(701)  评论(1编辑  收藏  举报
    当你在服务器上写一个返回复杂类型的方法时(无论是返回值还是Var参数返回),RemObjects框架都将其持久化发送到客户端,然后立即将其释放。
1function TChatService.GetLoggedUsers: TUserInfoArray;
2begin
3  Result := TUserInfoArray.Create;
4  Result.Add;
5  Result.Add;
6end;

    那么如何才能防止该对象自动释放呢?我们可以使用RetainObject方法防止该对象自动释放。如:
1function TChatService.GetLoggedUsers: TUserInfoArray;
2begin
3  Result := TUserInfoArray.Create;
4  Result.Add;
5  Result.Add;
6  RetainObject(Result);
7end;

    RetainObject方法调用完毕后,返回的TUserInfoArray实例将不会自动释放,除非该对象实现了IROObjectRetainer接口,否则需要注意的是在服务器关闭前必须释放该对象。实现IROObjectRetainer接口的类对象将由RemObjects架构管理其生存期。