0

このコードを使用してTListView、実行時のアイテムの表示方法を変更しています。

// lvContacts: TListView
// cdsContacts: TClientDataSet with two records
// lcfContacts: TLinkListControlToField

lvContacts.Items.BeginUpdate;
dmLocalData.cdsContacts.DisableControls;
try
  lcfContacts.FillExpressions.Clear;
  if MultiDetailsView then
  begin
    lvContacts.ItemAppearance.ItemAppearance := 'MultiDetailItem';
    with lcfContacts.FillExpressions.AddExpression do
    begin
      SourceMemberName := 'PictureData';
      ControlMemberName := 'Bitmap';
    end;
    with lcfContacts.FillExpressions.AddExpression do
    begin
      SourceMemberName := 'Job';
      ControlMemberName := 'Detail';
    end;
    with lcfContacts.FillExpressions.AddExpression do
    begin
      SourceMemberName := 'email';
      ControlMemberName := 'Detail1';
    end;
    with lcfContacts.FillExpressions.AddExpression do
    begin
      SourceMemberName := 'mobilePhone';
      ControlMemberName := 'Detail2';
    end;
    with lcfContacts.FillExpressions.AddExpression do
    begin
      SourceMemberName := 'landLinePhone';
      ControlMemberName := 'Detail3';
    end;
  end else begin
    lvContacts.ItemAppearance.ItemAppearance := 'ImageListItemBottomDetail';
    with lcfContacts.FillExpressions.AddExpression do
    begin
      SourceMemberName := 'PictureData';
      ControlMemberName := 'Bitmap';
    end;
    with lcfContacts.FillExpressions.AddExpression do
    begin
      SourceMemberName := 'Job';
      ControlMemberName := 'Detail';
    end;
  end;
finally
  lvContacts.Items.EndUpdate;
  dmLocalData.cdsContacts.EnableControls;
end;

Instrumentsを使用して iPhone でアプリケーションを監視しましたが、TMoveArrayManagerこのコードが実行されるたびに約 1 ギガバイトのインスタンスがリークされていることがわかります。ほんの数回で、iPhone のメモリが不足し、アプリケーションがシャットダウンします。実行時にライブ バインディングを破棄して作成するためのより良い方法を見つけようとしましたが、より良い解決策を思いつくことができませんでした。ライブバインディングでこのような問題が発生したことはありますか?

4

0 に答える 0