このコードを使用して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 のメモリが不足し、アプリケーションがシャットダウンします。実行時にライブ バインディングを破棄して作成するためのより良い方法を見つけようとしましたが、より良い解決策を思いつくことができませんでした。ライブバインディングでこのような問題が発生したことはありますか?