Hallo zusammen
Mein WebService-Aufruf tut mir immer grosse Memory Leaks machen, wodurch meine App nicht länger als ein paar Stunden im Background bleiben kann. (Was wichtig ist)
Schon nur das Login und Logout lassen Leaks entstehen lassen.
Das
WSDL habe ich in Delphi mit dem Wizard importiert.
In den xCode-Instruments habe ich dann einen Haufen an "malloc"-Einträgen, aber ich weiss nicht was ich mit denen tun soll.
Ich weiss nicht, was ich nicht gefreet habe oder sonswie am Leben habe laufen lassen, hat jemand eine Idee?
Danke.
Delphi-Quellcode:
procedure TDataModule.SOAPLogin();
var
loginRes:loginResponse;
WSLogin:login;
begin
WSLogin := login.Create;
WSLogin.user := user;
WSLogin.password := passwort;
WSLogin.domain := '
';
sess := sessionHeader.Create;
try
try
WSInterface := GetWSInterface(true, '
');
loginRes := WSInterface.login(WSLogin);
sess.sessionId := loginRes.sessionId;
(WSInterface
as ISOAPHeaders).Send(sess);
except on E:
Exception do
begin
TfgToast.Show('
SOAPLogin ist fehlgeschlagen.')
end;
end;
finally
WSLogin.Free;
loginRes.Free;
end;
end;
procedure TDataModule.SOAPLogout();
var
WSLogout:logout;
logoutRes:logoutResponse;
begin
WSLogout := logout.Create;
try
if sess.sessionId <> '
'
then
begin
try
WSLogout.sessionId := sess.sessionId;
logoutRes := WSInterface.logout(WSLogout);
except on E:
Exception do
begin
TfgToast.Show('
SOAPLogout ist fehlgeschlagen.')
end;
end;
end;
finally
WSLogout.Free;
if Assigned(sess)
then
sess.Free;
if Assigned(logoutRes)
then
logoutRes.Free;
WSInterface :=
nil;
end;
end;