Oolong - 代码人生,清茶飘香

Oolong Enterprise Data Service Platform
posts - 1, comments - 1, trackbacks - 0, articles - 0
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

2008年6月6日

    当你在服务器上写一个返回复杂类型的方法时(无论是返回值还是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架构管理其生存期。

posted @ 2008-06-06 15:58 Balsam Pear 阅读(285) | 评论 (1)编辑