Задав этот вопрос о полях интерфейса в записях , я предположил, что следующее будет работать (обратите внимание на утверждение):
type
TRec = record
Intf : IInterface;
end;
TTestClass = class
public
function ReturnRec : TRec ;
end;
// Implementation
function TTestClass.ReturnRec : TRec ;
begin
Assert (Result.Intf = nil); // Interface field in record should be initialized!
Result.Intf := TInterfacedObject.Create;
end;
Я проверил это с помощью следующего кода:
for I := 1 to 1000 do
Rec := Test.ReturnRec;
и утверждение не выполняется!
В чем моя ошибка? Какое предположение неверно?